Значение, возвращаемое методом 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()
Вернуться на верх