Я пытаюсь динамически добавить атрибут во время выполнения, используя следующие фрагменты кода:
Представление
...
for appellation in queryset:
if appellation.id in used_id_set:
appellation.is_used_flag()
print(appellation.is_used)
# prints true as expected
else:
appellation.is_not_used_flag()
first = queryset.first()
print(first.is_used)
# prints AttributeError: 'Appellation' object has no attribute 'is_used'
В модели
...
def is_used_flag(self):
self.is_used = True
def is_not_used_flag(self):
self.is_used = False
Почемуон работает правильно, когда в цикле, но когда я пытаюсь получить атрибут из экземпляра после того, как он не работает?Я столкнулся с той же проблемой, используя setattr, appellation.is_used = True
и изменив __dict__
.Также есть ли лучший способ сделать это?
Я ссылался на эти сообщения:
Почему вы не можете добавить атрибуты к объекту в python? У меня есть dict, но он, кажется, не сохраняется после цикла
Как назначить новый атрибут класса с помощью __dict __? Та же проблема, что и упомянутая выше
Динамическое определение полей экземпляра в классах Python То же, что и выше
Обновление
Поскольку в обоих ответах упоминаются сходные вещи, я должен уточнить, каковы мои намерения.Я не хочу на самом деле сохранить значение в БД.Я просто хочу сериализовать его и использовать в начале.