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
)