Я пытаюсь сделать довольно сложный запрос, где я могу исключить элементы, соответствующие определенному набору условий. Вот супер-упрощенная модель, чтобы объяснить мое затруднительное положение:Выполнение запроса «не в»
class Thing(models.Model)
user = models.ForeignKey(User)
shared = models.BooleanField()
number = models.IntegerField()
я начинаю с QuerySet, который фильтрует Пользователь:
qs = Thing.objects.filter(user=request.user)
Теперь из этого списка Thing, я хочу исключить любого пункты, где:
- разделяемый Правда, и
- п umber составляет не любое из значений
[1, 6, 7]
.
В моей голове я сделаю:
qs = qs.exclude(shared=True, number__not__in=[1, 6, 7])
Но __not__in
не существует, не так ли? Я чувствую, что мне нужно смешать это вокруг, чтобы пересечь два вопроса, но это кажется отвратительным для чего-то, что не может быть , что сложно. Каков мой лучший путь вперед?
Я не уверен, что вы можете комбинировать выражение Q с выражением non Q в том же самом фильтре. – karthikr
@karthikr. Вы можете, любые Q-группы должны идти первым, хотя. – Oli