Django: объедините значения двух полей модели в одно новое поле модели (3 разные модели)
У меня есть три разные модели.
class A(models.Model):
department = models.CharField(max_length=50, blank=False, null=False)
class B(models.Model):
state = models.CharField(max_length=50, blank=False, null=False)
class C(models.Model):
db_name = models.CharField(max_length=50, blank=False, null=False)
@property
def db_name(self):
return f"{A.department}_{B.state}"
Я хотел бы автоматически заполнить колонку db_name следующим образом "DEPARTMENT_STATE". Я думал, что db_name сделает это, но по какой-то причине это не работает, и я не понимаю почему?
Между моделями A -> B, A -> C существует связь по ID (но почему-то в таблице моделей B и C значения NULL).
Кто-нибудь знает, как я могу автоматически заполнить имя db_name, которое не требует ручного/пользовательского ввода?
class A(models.Model):
request_id = models.AutoField(primary_key=True , editable=False)
department = models.CharField(max_length=50, blank=False, null=False)
class B(models.Model):
request = models.ForeignKey(to=Request, on_delete=models.DO_NOTHING, null=True, blank=True, to_field='request_id')
state = models.CharField(max_length=50, blank=False, null=False)
class C(models.Model):
request = models.ForeignKey(to=Request, on_delete=models.DO_NOTHING, null=True, blank=True, to_field='request_id')
db_name = models.CharField(max_length=50, blank=False, null=False)
@property
def db_name(self):
request_state = B.objects.filter(request=self.request).first().state
return f"{self.request.department}_{request_state}"
Я думаю, что вы должны сделать запрос, чтобы C знал об отношениях между A и B.