Django queryset按数组过滤

时间:2015-10-06 11:10:30

标签: django postgresql django-queryset

我有一个模特:

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()我就不能这样做。

请帮帮我。

1 个答案:

答案 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)