zoukankan      html  css  js  c++  java
  • django ORM 连表查询

    db_index=True  如果设置该字段就可以设置索引

    auto_now_add  代表设置创建时候的时间

    auto_now   每次更新数据记录时会更新该字段

    to_field 设置要关联表的字段,一般是ID

    related_time 反向操作时,使用的字段名,用于代替原反向查询时的表名_set

    class Classes(models.Model):
        name = models.CharField(max_length=32)
    
    class Student(models.Model):
        name = models.CharField(max_length=32)
        theclass = models.ForeignKey(to="Classes")

    反向查询时:
    models.Classes.objects.first().student_set.all()
    才可以查询

    但如果在ForeignKey字段中添加了参数related_name后

    class Student(models.Model):
        name = models.CharField(max_length=32)
        theclass = models.ForeignKey(to="Classes", related_name="students"
    如上所示

    我们就可以这么写了,记得加s

    models.Classes.objects.first().students.all()

    db_table 创建第三张表时,数据库中表的名称

    symmetrical 仅用于多对多自关联时,指定内部是否创建反向操作的字段,默认为True

    class Person(models.Model):
        name = models.CharField(max_length=16)
        friends = models.ManyToManyField("self", symmetrical=False)
    此时person对象就没有person_set这个属性了




    创建多对多关联关系的三种方式:

    方式一:自行创建第三张表:

    class Author2Book(models.Model):
        author = models.ForeignKey(to="Author")
        book = models.ForeignKey(to="Book")
    
        class Meta:
            unique_together = ("author", "book")

     方式二:通过ManytoManyField 自动创建第三张表


    方式三:设置ManyTomanyField并指定自行创建的第三张表

    应用场合:在第三表需要额外的字段的时候,就用方式三

    方式三:设置ManyTomanyField并指定自行创建的第三张表

    反向操作:对象查找 obj.表名_set               表名记得是小写

    关联管理器 是在一对多,或者多对多的关联上下文中使用的管理器:

    它存在于下面两种情况:

    1.外键关系的反向查询

    2.多对多关联关系

    创建一个新的对象,并把他添加到关联对象集之中,返回新创建的对象

    create()

    models.Author.objects.first().book_set.create(title="番茄物语")

    add()

    把指定的model对象添加到关联对象集中

    author_objs = models.Author.objects.filter(id__lt=3)

    models.Book.objects.first().authors.add(*author_objs)

     

    添加ID:

    models.Book.objects.first().authors.add(1,2)

    把书的第一个对象的外键关联对象增加id为1,2的作者

     

     





  • 相关阅读:
    寒假特训——搜索——H
    寒假特训——I
    寒假训练——搜索 K
    three.js 加载STL文件
    three.js 加载3DS 404 文件找不到
    C# 请求数据 方式1
    学习 一个简单的业务处理
    ABP 05 创建Model 以及 相应的增删改查
    ABP 04 用户的创建
    ABP 00 常用知识
  • 原文地址:https://www.cnblogs.com/zhaoweihang/p/9209472.html
Copyright © 2011-2022 走看看