【发布时间】:2015-10-06 11:10:30
【问题描述】:
我有一个模型:
class MyUser(AbstractBaseUser, PermissionsMixin):
class Meta():
db_table = 'my_user'
...
interests = models.ManyToManyField(Interest, blank=True, db_index=True)
我必须写两个查询:
1) 获取 Interest_id = 1 或 5 或 4 的 MyUsers。
2) 获取 Interest_id = 1 和 5 和 4 的 MyUsers。
我的数据库是 PostgreSQL。
我为第一种情况编写了 SQL 查询:
SELECT DISTINCT myuser_id FROM my_user_interests WHERE interest_id = ANY(array[1,5,4]);
但我无法在第二种情况下使用它。
无论如何我需要用 Django ORM 来做这件事,因为我还需要通过新参数来编辑这个查询集,如果我使用 .raw()..
请帮帮我。
【问题讨论】:
-
该 SQL 与
... WHERE interest_id IN [1, 5, 4]) 有何不同? -
布兰登,是的,但它不能正常工作。 users = users.filter(interests__in=[1, 5, 4]) Daniel,错误:“[”第 1 行或附近的语法错误:...CT * FROM my_user_interests WHERE interest_id IN [1, 5, 4]跨度>
-
布兰登,我错了,“__in”是第一种情况的正确方法,但第二种情况的解决方案仍然开放..
标签: django postgresql django-queryset