老师能在说一下,related_name的作用与用法吗?迷迷糊糊的,还是有点不太理解
来源:5-4 Django中 聚合与统计的练习
霸气小肆毛
2020-02-18 08:45:33


1回答
好帮手乔木
2020-02-18
同学你好:
related_name字段指定这个字表在主表中对应的外键属性。
例如:
#买主 class Buyer(models.Model): name = models.CharField(verbose_name='买主名', max_length=10) #水果 class Fruit(models.Model): buyer = models.ForeignKey(Buyer, related_name='buyer_fruit') fruit_name = models.CharField(verbose_name='水果名', max_length=10) #查询买主,再通过买主查询买的水果。 buyer = Buyer.objects.filter(age = 100).first() #然后通过‘_set’方法获得子表中的数据: fruits = buyer.fruit_set.all() """ django 默认每个主表的对象都有一个是外键的属性,可以通过它来查询到所有属于主表的子表的 信息。 这个属性的名称默认是以子表的名称小写加上_set()来表示,这里我们的主表是buyer, 子表是fruit,所以主表外键的属性就是fruit_set """
fruit_set是django为对象buyer默认创建的外键的属性,建议采用自定义的方式定义主表的外键,而related_name就实现这个功能,在字表中定义外键时,增加related_name字段指定这个字表在主表中对应的外键属性, 如下:
buyer = models.ForeignKey(Buyer, related_name='buyer_fruit') """ 主表:buyer 子表:fruit 子表在主表中对应的外键属性:related_name='buyer_fruit' """ buyer = Buyer.objects.filter(age = 100).first() #然后通过子表中自定义的外键获取子表的所有信息: fruits = buyer.buyer_fruit.all()
如果我解决了同学的问题,请采纳!血学习愉快^_^。
相似问题