Установить значение по умолчанию для поля модели из экземпляра внешнего ключа - PullRequest
0 голосов
/ 09 июня 2019

Работая над приложением Django с двумя моделями (A и B), B имеет поле link, которое является отношением внешнего ключа к A:

# models.py
class A(models.Model):
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=15)
    my_bool = models.BooleanField(default=True)

class B(models.Model):
    link = models.ForeignKey(A)
    b_bool = models.BooleanField(default=link.my_bool) # Error!

Я хотел бы для b_boolполе для связанного значения my_bool в качестве по умолчанию , если нет B.b_bool с помощью мутации графена.

В настоящее время используется link.my_bool по умолчаниювыдает следующую ошибку при выполнении миграции:

AttributeError: 'ForeignKey' object has no attribute 'my_bool'

1 Ответ

0 голосов
/ 09 июня 2019

Не думаю, что так будет.Вместо этого попробуйте переопределить метод save():

class B(models.Model):
    link = models.ForeignKey(A)
    b_bool = models.BooleanField(default=False)

   def save(self, *args, **kwargs):
     if not self.b_bool:
         self.b_bool = self.link.my_bool
     super(B, self).save(*args, **kwargs)
...