类方法在Django中的queryset中的应用
我不熟悉Django的高级概念,我发现自己对自定义方法等概念的应用有些困惑 基本上,这个简短的例子最能描述我的目标。 我有两个类,即供应商和订单。每个订单都有一个供应商。模型如下所示:类方法在Django中的queryset中的应用,django,Django,我不熟悉Django的高级概念,我发现自己对自定义方法等概念的应用有些困惑 基本上,这个简短的例子最能描述我的目标。 我有两个类,即供应商和订单。每个订单都有一个供应商。模型如下所示: class Order(models.Model): vendor_agreement = models.ForeignKey(VendorAgreement, on_delete = models.CASCADE) @property def get_vendor_agreement(s
class Order(models.Model):
vendor_agreement = models.ForeignKey(VendorAgreement, on_delete = models.CASCADE)
@property
def get_vendor_agreement(self):
....
return result
如您所见,我在get\u vendor\u agreement
方法中封装了order
和vendor\u agreement
之间的所有业务逻辑
问题是否有任何优雅的方法可以获得与订单
查询集相对应的不同的供应商协议
列表?我的意思是,类似于Order.objects.filter(…).vendor\u agreement()
,它将返回不同的供应商协议列表。
提前感谢。来自官方:
在上面的示例中,manager reporter.article_集合中将提供以下方法
此外,您还可以使用将数据联接到一个查询中的方法
在您的情况下,代码应该如下所示:
order_list = Order.objects.filter(...).prefetch_related('vendor_agreement')
for order in order_list:
print order
for vendor_agreement in order.vendor_agreement_set.all():
print vendor_agreement
我的示例中的代码只会命中数据库一次。来自官方:
在上面的示例中,manager reporter.article_集合中将提供以下方法
此外,您还可以使用将数据联接到一个查询中的方法
在您的情况下,代码应该如下所示:
order_list = Order.objects.filter(...).prefetch_related('vendor_agreement')
for order in order_list:
print order
for vendor_agreement in order.vendor_agreement_set.all():
print vendor_agreement
我的示例中的代码只会命中数据库一次。预回迁相关,而不是选择相关。。。但无论如何-阅读此文档:预回迁相关,而不是选择相关。。。但无论如何,请阅读此文档: