Значение, возвращаемое методом property в django, не сохраняется в базе данных. Как сделать это возможным?
В моем файле models.py есть метод свойства, который возвращает значение, и мне нужно сохранить это значение в поле базы данных.
`
class bug(models.Model):
......
.......
id_of_bug = models.CharField(max_length=20, blank= False, null= False)
@property
def bug_id(self):
bugid = "BUG{:03d}".format(self.pk)
self.id_of_bug = bugid
return bugid
Tried to store the value in database using self method, but not working.
Я бы попробовал использовать сеттер свойства, который обновляет значение таблицы:
class bug(models.Model):
......
.......
id_of_bug = models.CharField(max_length=20, blank= False, null= False)
@property
def bug_id(self):
bugid = "BUG{:03d}".format(self.pk)
self.id_of_bug = bugid
return bugid
@bug_id.setter
def bug_id(self, value):
# value = some_transform(value)
self.id_of_bug = value
self.save(update_fields=['id_of_bug'])
Попробовать сигналы для хранения данных
class bug(models.Model):
......
.......
id_of_bug = models.CharField(max_length=20, blank= False, null= False)
@property
def bug_id(self):
bugid = "BUG{:03d}".format(self.pk)
return bugid
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=bug)
def save_bugid(sender, instance,created, **kwargs):
if created:
instance.id_of_bug = instance.bug_id
instance.save()