我有一个模特:
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()我就不能这样做。
请帮帮我。
答案 0 :(得分:0)
我已经解决了这个问题/
1)
users = users.filter(interests__in=[1, 5, 4])
2)
list_ = [1, 5, 4]
for i in len(list_):
users = users.filter(interests=i)