вручную создайте Django QuerySet или скорее вручную добавьте объекты к QuerySet

В основном мне нужен корректный способ сделать следующий:-

obj1 = Model1.objects.select_related('model2').get(attribute1=value1)
obj2 = Model1.objects.select_related('model2').get(attribute2=value2)
model2_qs = QuerySet(model=Model2, qs_items=[obj1.model2,obj2.model2])

Я не могу думать право, но делать, что-то как следующее кажется бесконечно глупым мне.: -

obj1 = Model1.objects.select_related('model2').get(attribute1=value1)
model2_qs = Model2.objects.filter(pk=obj1.model2.pk)

Да, я должен закончить с QuerySet Model2 для более позднего использования (конкретно для передачи форме Django).

В первом блоке кода выше, даже если я использую filter вместо get У меня, очевидно, будет QuerySet Model1. Обратные поиски не могут всегда быть возможными в моем случае.

24
задан chefsmart 3 August 2010 в 14:23
поделиться

1 ответ

Если вы просто хотите создать набор элементов, которые вы выбрали в результате какого-то сложного процесса, не представимого в SQL, вы всегда можете использовать оператор __in.

wanted_items = set()
for item in model1.objects.all():
    if check_want_item(item):
        wanted_items.add(item.pk)

return model1.objects.filter(pk__in = wanted_items)

Очевидно, что вам придется адаптировать его к вашей ситуации, но он должен дать вам хотя бы отправную точку.

36
ответ дан 28 November 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: