Динамическое создание списка F комбинированных выражений Django - PullRequest
1 голос
/ 10 марта 2020

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

Пример работы:

return F('field1') + F('field2')

Я пытаюсь динамически создать поля, которые он должен вернуть и оператор. У меня есть список аргументов, входящих в функцию, а также оператор уже.

Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 10 марта 2020

Создать функцию, которая будет генерировать F():

reporter = Reporters.objects.get(name='Tintin')
reporter.stories_filed = get_your_f_function(field_list, operator_list)
reporter.save()

...

def get_your_f_function(field_list, operator_list):
   # assert operator_list size is field_list size - 1, they are not empty...
   main_f = F(field_list.pop(0))
   for i, field in enumerate(field_list):
       if operator_list[i] == '+':
           main_f = main_f + F(field)
       if operator_list[i] == '-':
           main_f = main_f - F(field)
       ...
   return main_f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...