Как использовать ForeignKey.limit_choices_to для ограничения отношений между двумя объектами с одним и тем же родительским объектом - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть следующие модели django:

class League(models.Model):

class Division(models.Model):
    league = models.ForeignKey(League)

class Season(models.Model):
    league = models.ForeignKey(League)
    divisions = models.ManyToManyField(Division)

Можно ли использовать ManyToManyField.limit_choices_to для Season.divisions, чтобы требовать, чтобы сезон и деление могли быть связаны, только если они имеют одинаковыезначение лиги?

Согласно документации django , limit_choices_to

Устанавливает ограничение на доступные варианты выбора для этого поля, когда это поле отображается с использованиемModelForm или администратор (по умолчанию все объекты в наборе запросов доступны для выбора).Можно использовать словарь, объект Q или вызываемый объект, возвращающий словарь или объект Q.

Есть ли способ использовать Q () и использовать ссылку на текущую запись сезона?Что-то вроде следующего не работает, потому что self не определено, но, возможно, есть какой-то способ указать нечто подобное:

divisions = models.ManyToManyField(Division, limit_choices_to=Q( league = self.league )
...