Найти - Пользователи
Полная версия: Как правильно сделать QuerySet
Начало » Django » Как правильно сделать QuerySet
1
myarik
Здравствуйте.

Подскажите как правильно сделать запрос. Есть следующая структура
class Model1(models.Model):
    name = models.CharField()
    ....
class Model2(models.Model):
    model1 = models.ForeignKey(Model1)
    name = models.CharField()
    model3 = models.ForeignKey(Model3)
    ...
class Model3(models.Model):
    name = models.CharField()
    ...

Задача следующая, у меня есть список primary key для значений из третей модели
LIST = [2,23,54]
Нужно найти все значение Model1 которые имеют посылания на все элементы из списка. Пока реализовал так, но не думаю что это правильно

pk_list = None
for value in LIST:
    if pk_list:
        pk_list = Model2.objects.filter(
            model3__pk=value,
            model1_id__in=pk_list).values_list(
                'model1_id', flat=True)
    else:
        pk_list = Model2.objects.filter(
            model3__pk=value).values_list(
                'model1_id', flat=True)

Спасибо.
GreyZmeem
То что вы написали, это ManyToMany with extra fields
Model1.objects.filter(model2__model3__pk__in=LIST)
myarik
Спасибо за ответ.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB