[django] ORM自关联

表内自关联是指表内数据相关联的对象和表是相同字段,这样我们就直接用表内关联将外键关联设置成自身表的字段。同样表内关联也分一对多字段和多对多字段

例如:对于微博评论,每条评论都可能有子评论,但每条评的字段内容应该都是相同的,并且每条评论都只有一个父评论,这就满足了,一对多的情形。父评论为关联字段,可以对应多个子评论,这就是一对多的自关联。

自关联主要靠数据库中自关联表的第一列from 和 第二列to 定义主从。

class UserInfo(models.Model):
    username = models.CharField(max_length=8)
    password = models.CharField(max_length=8)
    gender_choices = (
        ("男", 1),
        ("女", 2),
    )
    gender = models.IntegerField(choices=gender_choices)

    m = models.ManyToManyField("UserInfo")

views

# 查第一列
# x = models.UserInfo.objects.filter(id=1).first()
# result = x.m.all()
# for u in result:
#     print(u.username)

# 查第二列
x = models.UserInfo.objects.filter(id=4).first()
result = x.userinfo_set.all()
for u in result:
    print(u.username)
posted @ 2019-10-09 10:54  Moke丶青  阅读(230)  评论(0)    收藏  举报