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
Вернуться на верх