如何在django-oscar中显示所有用户购买的产品?

fiei3ece  于 2023-03-13  发布在  Go
关注(0)|答案(2)|浏览(118)

我试图渲染所有用户购买的产品上django-oscar和我有一些问题。
我可以打印所有订单的用户在订单。订单

OrderProduct.objects.filter(user=user)

但它不打印每一个产品本身,如果订单包括几个产品(保存在order.line)我也可以打印订单中的所有产品.line

LineProduct.objects.all()

但是我不能按用户过滤它们,因为order. line中没有用户字段。
我可以在订单上添加用户字段。行,并从每次订单复制,但我不认为这是最好的解决方案。
有人想到解决办法了吗?
先谢了

编辑:这是模型文件链接https:github.com/django-oscar/django-oscar/blob/fe37a51c040303b6f0251d1973d39694c3eaba88/src/oscar/apps/order/abstract_models.py#L27

mwngjboj

mwngjboj1#

您可以通过以下方式获取用户购买的所有产品的列表:

Product.objects.filter(line__order__user=user)

这是遵循外键关系,从LineProduct向后,然后从LineOrderUser向前(有关如何工作,请参见the documentation)。
这个查询集很可能会导致重复,因此您可能需要在末尾添加一个distinct()子句,具体取决于您想对它做什么。

vm0i2vca

vm0i2vca2#

在django-oscar中有一个叫做“线条”的模型,在django-oscar中有两个线条模型:--
1.购物车添加的行(项目)。
1.订单添加的行(项目)。(因此,为了获得购买记录,您可以使用订单行项目)与产品型号有直接关系。

相关问题