老师能在说一下,related_name的作用与用法吗?迷迷糊糊的,还是有点不太理解

来源:5-4 Django中 聚合与统计的练习

霸气小肆毛

2020-02-18 08:45:33

http://img.mukewang.com/climg/5e4b32d70904204810190402.jpg

http://img.mukewang.com/climg/5e4b32a009af690413100507.jpg

写回答

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()

如果我解决了同学的问题,请采纳!血学习愉快^_^。


0

0 学习 · 3562 问题

查看课程