Как мы можем получить доступ и сохранить значение объекта модели foregn как значение по умолчанию, если поле пусто при сохранении связанной модели объекта?

class ObjectSEO(models.Model):
object= models.ForeignKey(Objects, related_name='seo', on_delete=models.CASCADE)
meta_description = models.CharField(max_length=170, help_text="Please add product meta description, max length 170 characters", default="Some Texts" )
meta_keywords = models.CharField(max_length=250, help_text="Please add product keywords separated with comma", default="Some Texts" )
meta_name = models.CharField(max_length=70, help_text="object title"  default = Objects.name)

Здесь у меня есть две модели, Objects и ObjectSEO.

В модели ObjectSEO > site_name column> я хочу добавить внешний ключ Objects name в качестве значения по умолчанию.

Как я могу это сделать? Является ли мой подход питоническим?

Вы можете переопределить метод save() модели ObjectSEO, чтобы установить значение по умолчанию для самого поля модели.

class ObjectSEO(model.Model):
    object= models.ForeignKey(Objects, related_name='seo', on_delete=models.CASCADE)
    meta_description = models.CharField(max_length=170, help_text="Please add product meta description, max length 170 characters", default="Some Texts" )
    meta_keywords = models.CharField(max_length=250, help_text="Please add product keywords separated with comma", default="Some Texts" )
    meta_name = models.CharField(max_length=70, help_text="object title"  default = Objects.name)

    def save(self, *args, **kwargs):
        if self.object.name is not None:
            self.meta_name = self.object.name

        super(ObjectSEO, self).save(*args, **kwargs)
Вернуться на верх