# 普通字段
name = models.CharField(max_lenth=20)
# 一对多字段,ForeignKey
name = models.ForeignKey(tablename, on_delete="", related_name=None)
{
tablename: #关联表名
}
{
on_delete = None, # 当删除关联表中的数据时,当前表与其关联的行的行为
- models.CASCADE,# 删除关联数据,与之关联也删除
- models.DO_NOTHING,# 删除关联数据,引发错误IntegrityError
- models.PROTECT,# 删除关联数据,引发错误ProtectedError
- models.SET_NULL,# 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
- models.SET_DEFAULT,# 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
- models.SET,# 删除关联数据,
a.与之关联的值设置为指定值,设置:models.SET(值)
b.与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
}
{
related_name: boj.表名_set.all() == obj.relater_name.all()
}
# 多对多字段,ManyToManyField()
name = models.ManyToManyField(tablename, )
# 正向查找:主表直接查询关联表内容
在serializers.CharField字段中,添加source参数, 格式为source = '外键.某字段'
Course_name = serializers.CharField(source='course.title',required=False)
# 反向查找:关联表通过外键查询主表内容
class ChaptersSerializer(serializers.ModelSerializer):
# 正向查找,找到课程表
# Course_name = serializers.CharField(source='course.title',required=False)
# 反向查找,找到节表对应的信息
sections = SectionsSerializer(many=True)
class Meta:
fields = '__all__'
model = models.Chapters
class SectionsSerializer(serializers.ModelSerializer):
class Meta:
fields = '__all__'
model = models.Sections