我试图渲染所有用户购买的产品上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
2条答案
按热度按时间mwngjboj1#
您可以通过以下方式获取用户购买的所有产品的列表:
这是遵循外键关系,从
Line
到Product
向后,然后从Line
到Order
到User
向前(有关如何工作,请参见the documentation)。这个查询集很可能会导致重复,因此您可能需要在末尾添加一个
distinct()
子句,具体取决于您想对它做什么。vm0i2vca2#
在django-oscar中有一个叫做“线条”的模型,在django-oscar中有两个线条模型:--
1.购物车添加的行(项目)。
1.订单添加的行(项目)。(因此,为了获得购买记录,您可以使用订单行项目)与产品型号有直接关系。