Django список значений

Каков наилучший способ хранения поля, которое может принимать подмножество вариантов выбора другого класса?

У меня есть класс с полем, которое представляет собой список вариантов:

class Type( models.Model):
   type = models.CharField(max_length=4, choices=TYPE_CHOICES, default='CONS')

и другой класс с внешним ключом для Type, который должен хранить подмножество вариантов:

class AnotherType( models.Model ):
   model_parameter = models.ForeignKey(Type, on_delete=models.CASCADE)
   subset = models.XXX( arbitrary subset of Type.type.TYPE_CHOICES )

Любая помощь приветствуется!

1 ответ

Обратный ForeignKey, может быть. related_name указанное позволит любому объекту иметь несколько обратных отношений.

class Type( models.Model):
    type = models.CharField(max_length=4, choices=TYPE_CHOICES, default='CONS')
    another_type = models.ForeignKey('yourmodel.AnotherType', related_name='subset')

class AnotherType( models.Model ):
    model_parameter = models.ForeignKey(Type, on_delete=models.CASCADE)

Теперь, если у вас есть пример, модифицированный под ваши нужды, вы можете сделать:

a = AnotherType.objects.first()
a.subset.all()  # Some of the types you associated with it
Другие вопросы по тегам