Python Django,模型,一对一、一对多、多对多模型类关系的定义。ForeignKey、ManyToManyField、OneToOneField

一对多关系

models.ForeignKey()   # 定义在多的类中。

多对多关系

models.ManyToManyField()   # 定义在哪个类中都可以。

一对一关系

models.OneToOneField()   # 定义在哪个类中都可以。

一对多关联:

应用名/models.py(模型,定义模型类,models.ForeignKey):

from django.db import models

# 一个图书对应多个英雄人物

# 图书类(一类)
class BookInfo(models.Model):
    # 图书名称
    title = models.CharField(max_length=20)


# 英雄人物类(多类)
class HeroInfo(models.Model):
    # 英雄名
    name = models.CharField(max_length=20)
    # 关联属性 (定义在多的一方)
    book = models.ForeignKey('BookInfo')  # 对应数据库表中的字段book_id。
    # heroInfo.book是BookInfo对象; heroInfo.book_id只是BookInfo对象的id

多对多关联:

应用名/models.py(模型,定义模型类,models.ManyToManyField):

from django.db import models


# 新闻和新闻类型是多对多的关系

# 新闻类
class NewsInfo(models.Model):
    # 新闻标题
    title = models.CharField(max_length=128)
    # 关联属性, 代表新闻类型
    # news_type = models.ManyToManyField('NewsType')  # 定义在新闻类或新闻类型类中都可以。
    
    
# 新闻类型类
class NewsType(models.Model):
    # 类型名
    type_name = models.CharField(max_length=20)
    # 关联属性,代表关联的新闻
    type_news = models.ManyToManyField('NewsInfo')  # 定义在新闻类或新闻类型类中都可以。

一对一关联:

应用名/models.py(模型,定义模型类,models.OneToOneField):

from django.db import models


# 员工基本信息类和详细信息类是一对一的关系

# 员工基本信息类
class EmployeeBasicInfo(models.Model):
    # 姓名
    name = models.CharField(max_length=20)
    # 关联属性,代表员工的详细信息
    employee_detail = models.OneToOneField('EmployeeDetailInfo')  # 定义在基本信息类或详细信息类中都可以。 


# 员工详细信息类
class EmployeeDetailInfo(models.Model):
    # 联系地址
    addr = models.CharField(max_length=256)
    # 关联属性,代表员工基本信息
    # employee_basic = models.OneToOneField('EmployeeBasicInfo')  # 定义在基本信息类或详细信息类中都可以。 

自关联(自己关联自己):

应用名/models.py(模型,定义模型类,models.ForeignKey):

from django.db import models


# 自关联

# 地区模型类,存储省、市、区县信息
class AreaInfo(models.Model):
    title = models.CharField(max_length=30) # 名称
    parent = models.ForeignKey('self')  # 自关联。

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/84952247
今日推荐