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
    第三张表的名字



  • 相关阅读:
    Web持久化存储Web SQL、Local Storage、Cookies(常用)
    浅谈TypeScript
    浅谈JavaScript、ES5、ES6
    AngularJS1.3一些技巧
    AngularJS学习总结
    poj-----Ultra-QuickSort(离散化+树状数组)
    HDUOJ---1241Oil Deposits(dfs)
    HDUOJ---携程员工运动会场地问题
    HDUOJ------2398Savings Account
    HDUOJ-----2399GPA
  • 原文地址:https://www.cnblogs.com/amber-liu/p/10005969.html
Copyright © 2011-2022 走看看