Django - удаление элементов из select с сохранением исходного запроса

Мне интересно, есть ли в Django функциональность для удаления определенных элементов из select после их добавления. Например, допустим, у меня есть запрос, который выглядит следующим образом:

FooBar.objects.annotate(
    field_1=field_1,
    field_2=field_1,
    field_3=field_1
).filter(
    some_filter_set
)

would produce SQL like so:

select field_1, field_2, field_3 from foo_bar where some_filter_set

После того, как первоначальный запрос был сделан, я хотел бы сохранить этот запрос и создать другую копию, точно такую же, но сокращенную до поля_1 в селекте. Дает ли Django возможность напрямую редактировать select?

Причина в том, что у меня есть очень большой динамически созданный запрос, который нужно использовать в подзапросе. Я хотел бы взять окончательную версию запроса, скопировать ее, изменить select и использовать в качестве подзапроса.

Спасибо!

А как насчет чего-то вроде?

values_list = ['field1', 'field2', ...]

# add or remove fields from the list as necessary:
...

queryset = FooBar.objects.filter(some_filter_set).values(*values_list)

Или, если вы хотите придерживаться annotate, мы используем python, поэтому:

annotation_dictionary = {
    "new_field_name_1" : "field_name_1",
    "new_field_name_2" : "field_name_2",
    ...
}

# add or remove entries from the dictionary as necessary:
...

FooBar.objects.annotate(
    **annotation_dictionary 
).filter(
    some_filter_set
)
Вернуться на верх