Можете ли вы выполнять итерации по полям модели, когда вы перезаписываете метод save() в django?

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

Я пытаюсь написать цикл for для хранения значений словаря. Ключи соответствуют именам полей модели:

def save(self, *args, **kwargs):
        if self.text != "":
            results_dict = analyze(self.text)
            for field_name in field_names_list:
                self.field_name = results_dict[field_name]

Значение не хранится в соответствующем поле. Нужно ли мне вместо этого использовать setattr?

Попробуйте это:

def save(self, *args, **kwargs):
   if self.text != "":
      results_dict = analyze(self.text)
      for field_name in field_names_list:
         setattr(self, field_name, results_dict[field_name])
   super().save(*args, **kwargs)
Вернуться на верх