django-创建表的字段属性,表关系

Posted .Tang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-创建表的字段属性,表关系相关的知识,希望对你有一定的参考价值。

表的各种属性文档:null char ..., django与之对应的文档

表关系

class Book(models.Model):
    headline = models.CharField(大标题, max_length=50)
    pub_date = models.DateTimeField(出版时间,auto_now=True)


    class Meta:
        db_table = book # 映射到数据库的表名。不设置该属性,默认名字为appname_book   app名字_类名
        managed = True # 默认True 代表通过django管理该表结构,反之不操作book表
        ordering = [-pub_date, id] # 排序 可通过多个字段排序 倒序添加"-"即可
        verbose_name = 书籍 # 查询结果为单条记录的描述
        verbose_name_plural = 书记柜 # 查询结果为多条数据的描述


class Number(models.Model):
    number = models.IntegerField(编号)
    book = models.OneToOneField(Book) # book与number一对一关系 OneToOneField代表一对一  不指定(to_field="id")关联字段,默认关联主键id


class Author(models.Model):
    name = models.CharField(姓名, max_length=100)
    book = models.ManyToManyField(Book) # author与book可以是多对多 ManyToManyField代表多对多


class Reply(models.Model):
    content = models.TextField(评论, max_length=200)
    book = models.ForeignKey(Book) # reply与book是多对一关系 django是多对一,设置在‘多‘的表里  ForeignKey代表多对一

表关系外键可以传入的属性

  • ForeignKey 外键的属性(包括ManyToManyField,OneToOneField)
    • db_constraint:bool  是否建立外键约束
    • to_field:string 关联到的关联对象的字段名称。默认地,Django 使用关联对象的主键。
    • related_name: string 这个名称用于让关联的对象反查到源对象.如果你不想让Django 创建一个反向关联
    • on_delete: string 可以取如下值
      • CASCADE:级联删除,如果删除,相关联的那个也会删除
      • PROTECT:保护类型。如果删除,将会抛出一个ProtectedError错误
      • SET_NULL:如果删除了本条数据,外键的那条数据将会设置为null,这个只有在外键null为True的情况下才可以使用
      • SET_DEFAULT:如果删除了本条数据,外键那条数据将会职位默认值,这个只有在外键那个字段设置了default参数才可以使用

以上是关于django-创建表的字段属性,表关系的主要内容,如果未能解决你的问题,请参考以下文章

Django orm关系表的创建 路由层以及视图层

django之模型类迁移和数据库表之间的关系

django

django之多表查询

四十ORM创建对象关系

Django开发:(3.1)ORM:单表操作