Django(6)

为何不用_setdjango

 

related_name和related_query_name的区别

related_name将成为相关对象的属性,容许您使用外键对模型进行“倒退”。例如,若是ModelA有像下面这样的字段,那么model_b = ForeignKeyField(ModelB, related_name='model_as')这将使您可以经过去访问ModelA与您的ModelB实例相关的实例model_b_instance.model_as.all()请注意,这一般是用复数形式编写的外键,由于外键是一对多关系,而且该等式的许多方面是具备在其上声明的外键字段的模型。post

文档中进一步的解释是有帮助的。https://docs.djangoproject.com/en/1.10/topics/db/queries/#backwards-related-objectsspa

related_query_name用于Django查询集。它容许您过滤外键相关字段的反向关系。为了继续咱们的例子 - 将一个字段设置Model A为: model_b = ForeignKeyField(ModelB, related_query_name='model_a')将使您能够model_a用做查询集中的查找参数,如:ModelB.objects.filter(model_a=whatever)使用单数形式更常见related_query_name正如文档所说,没有必要指定二者(或其中之一)related_namerelated_query_nameDjango具备合理的默认值。code

 

# 统计出每一个出版社买的最便宜的书的价格ret=models.Publisher.objects.first().book_set.all()ret=models.Publisher.objects.get(id=1).books.all()book_set能够用books代替related_name用在get上ret=models.Publisher.objects.filter().annotate(c=Min('zhangzhao__price')).values('name','zhangzhao__title','c')print(ret)book_set能够用books代替related_query_name用在filter上
相关文章
相关标签/搜索