У меня есть несколько файлов, которые организованы по категориям. Для каждой категории я хочу иметь возможность выбрать победителя foo.
Следовательно, у меня есть модели, которые выглядят следующим образом:
class Category(models.Model):
name = models.CharField(max_length=30)
# More fields...
winner = models.ManyToManyField(
'Foo',
related_name='winner'
)
class Foo(models.Model):
name = models.CharField(max_length=30)
# More fields...
category = models.ForeignKey(
Category,
related_name='category'
)
(Причина, по которой победитель
является ManyToManyField
, заключается в том, что один объект foo может принадлежать нескольким категориям, в то время как один category может быть более одного победителя из-за ex-aequo.)
Я хочу наложить естественное ограничение, согласно которому foo может выиграть в категории, только если он принадлежит к этой категории. Наиболее разумным способом сделать это кажется использование параметра limit_choices_to
, но мне кажется, что невозможно ограничить выбор на основе текущего экземпляра модели.
Я могу наложить это ограничение в заданной форме, но я хотел бы избежать этого по двум причинам:
Есть ли способ наложить это ограничение в Django?