Предположим, что у меня есть следующие модели Django:Как использовать объекты Q, чтобы проверить, если какие-либо члены списка произвольной длины в много-к-многим
class myObj1(models.Model):
myField1 = models.IntegerField()
class myObj2(models.Model):
myLocalObj1 = models.ManyToManyField(myObj1)
Кроме того, предположим, что у меня есть список уникальных myObj1s:
a = myObj1(myField=1)
b = myObj1(myField=2)
c = myObj1(myField=3)
myTargetList = [a, b, c]
Теперь я хотел бы написать запрос Django с использованием объектов Q таким образом, что он возвращает все myObj2s, которые имеют какой-либо член myTargetList как myLocalObj1. Кроме того, я заранее не знаю точный размер myTargetList.
Как мне это сделать? Это, очевидно, не будет работать:
myObj2.objects.filter(Q(myLocalObj1__in=myTargetList))
Это не сработало. Это недействительный синтаксис python. И даже если бы это было так, это не дает правильного ответа. –
Хм, может быть, моя версия python немного отличается, используя 2.5, она отлично работала. Я отредактирую свой ответ и, возможно, получу что-то еще более подробно с тем, что вы ищете –