【发布时间】:2020-12-24 01:24:02
【问题描述】:
在我的查询集模型上编写过滤器时遇到问题:
class Order(models.Model):
items = models.ManyToManyField(OrderLine)
store = models.ForeignKey(Store, blank=True, null=True, on_delete=models.SET_NULL)
class OrderLine(models.Model):
orderItemId = models.IntegerField(blank=False, null=False, unique=True)
quantity = models.IntegerField(blank=True, null=True)
class Store(models.Model):
storeName = models.CharField(max_length=200, blank=True, null=True)
access_from_account = models.ManyToManyField(EDUser, blank=True)
我有 EDUser "accounts" 的查询集 现在我想选择属于 Order 的 OrderLines,这些 OrderLines 来自于 access_from _account 中的帐户可见的 Store。
所以,例如:
store_name_1 拥有 access_from_account 用户_1、用户_2
store_name_2 拥有 access_from_account user_1
在 Orders 上属于 store_name_1。这些订单有许多 OrderLines。 我想选择 user_1 应该可以访问的 order_lines。
我可以这样做吗: acounts 是 ['user_1'] 的查询集
lines = OrderLine.objects.filter(order__store__access_from_account__in=accounts)?
我试过了,但我得到了一些奇怪的值......
关于如何正确执行的任何建议?我想避免制作列表并对其进行迭代。
提前致谢:)
【问题讨论】:
-
你不需要
__in查找,所以 lines =OrderLine.objects.filter(order__store__access_from_account=user1)就足够了,究竟什么是“奇怪的值”? -
所以,对于我有几行的商店之一,我得到的结果就像我有几百行一样。但是你的回答解决了我的问题。祝福
.distinct():)
标签: django django-models django-views