zoukankan      html  css  js  c++  java
  • ManyToMany参数(through,db_constraint)

    through : 指定自己写好的第三张表,我们可以给第三张表添加字段了(告诉Django不用建第三张表了,我们都给他配好了)

    class Book(models.Model):
        name=models.CharField(max_length=20)
        authors=models.ManyToMany('Author',through='Score')
    
    
    class Author(models.Model):
        name=models.CharField(max_length=20)
    
    
    class Score(models.Model):
        book=models.ForeignKey('Book')
        author=models.ForeignKey('Author')
        socre=models.IntegerField()

    如果只写manytomany,那么第三张是Django替我们建的,可以通过book.authors字段进行一系列操作(add(增),all(查),set(重置),remove(删除)),但是此时没法给第三张表加其他我们需要的字段,

    而如果不写,ManyToMany字段,那么我们可以通过Score来执行一些操作,但是此时book和author表已经没有直接的联系了,查询起来很繁琐

    有了authors=models.ManyToMany('Author',through='Score'),那么就既可以方便查,也方便业务,添加需要的字段

    db_constraint : 

    db_constraint=False,这个就是保留跨表查询的便利(双下划线跨表查询```),但是不用约束字段了,一半公司都用false,这样就省的报错,因为没有了约束(Field字段对象,既约束,又建立表与表之间的关系)


    limit_choices_to
    限制关联字段的对象范围


    related_name
    反向查询字段可以不用 表名小写,可以改名了

    db_table
    第三张表的名字



  • 相关阅读:
    tomcat 乱码问题
    mongo获取lbs数据
    sping mvc+uploadify 上传文件大小控制3部曲
    jstack 查看线程状态
    nginx 限流配置
    查找占用CPU高线程
    redis sentinel无法启动问题
    GC垃圾回收机制
    ASP.NET 生命周期
    Javascript验证手机号码正则表达式
  • 原文地址:https://www.cnblogs.com/amber-liu/p/10005969.html
Copyright © 2011-2022 走看看