Почему, когда я устанавливаю active_template = home.template
в сигнале django, все выглядит нормально, пока я снова не нажму кнопку "сохранить" в панели администратора. Затем переменная active_template снова устанавливается на 0. Не следует ли перезаписывать, когда я снова запускаю сигнал? Я пробую это с нормальной функцией, и это работает, так что я думаю, проблема в сигнале.
модель:
class Homepage(models.Model):
choice_dict = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}
TEMPLATE_TYPE = [
(choice_dict['one'], '1'),
(choice_dict['two'], '2'),
(choice_dict['three'], '3'),
(choice_dict['four'], '4'),
(choice_dict['five'], '5'),
]
template = models.IntegerField(choices=TEMPLATE_TYPE, null=True, blank=True)
content = RichTextUploadingField(null=True, blank=True)
сигнал
def default_value(sender, instance, **kwargs):
test = ['test','test1','test2']
home = Homepage.objects.first()
active_template = 0
if home.template and active_template != home.template:
Homepage.objects.filter(pk=2).update(content=test[home.template])
active_template = home.template
post_save.connect(default_value, sender=Homepage)