Django: модель ForeignKey из ForeignKey
Я хочу сделать что-то вроде этого в Django:
Модель1 определяет несколько типов.
Модель2 определяет имя (Ключ Модели2) и выбирает один тип из Модели1.
Модель3 получает имя и типы, определенные в Модели2, и определяет другую переменную.
Я пробовал это, но это не работает:
class Model1(models.Model):
types = models.CharField(max_length=50)
class Model2(models.Model):
name = models.CharField(max_length=50)
types = models.ForeignKey(Model1, on_delete=models.CASCADE, null=True, blank=True)
class Model3(models.Model):
name = models.ForeignKey(Model2, on_delete=models.CASCADE,related_name='name')
types = models.ForeignKey(Model2, on_delete=models.CASCADE,related_name='types')
other = models.CharField(max_length=50)
Это не работает. Есть идеи или альтернатива? Спасибо!!!
Как говорит @IgorMoraru, хранить две ссылки не имеет смысла. Вы можете получить type
, обратившись к ней "через" объект Model2
. Действительно, моделирование таким образом должно выглядеть так:
class Model1(models.Model):
type = models.CharField(max_length=50)
class Model2(models.Model):
name = models.CharField(max_length=50)
type = models.ForeignKey(Model1, on_delete=models.CASCADE, null=True, blank=True)
class Model3(models.Model):
name = models.ForeignKey(Model2, on_delete=models.CASCADE)
other = models.CharField(max_length=50)
Затем вы можете получить Model1
объект, связанный "через" Model2
объект Model3
объекта с помощью:
my_model3.name.type
или если вы хотите, чтобы значение хранилось в поле type
:
my_model3.name.type.type