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.

Отношения

Вернуться на верх