【问题标题】:How to limit choices for a Many to Many relation?如何限制多对多关系的选择?
【发布时间】:2012-06-09 19:20:33
【问题描述】:

我正在使用 Python + Django,现在我的模型中有这个:

class Team(models.Model):
    player = models.ManyToManyField(Player, related_name="player", through="Team_Player")
    squad = models.ManyToManyField(Player, related_name="squad", blank=True)

class Player(Person):
    name = models.CharField(max_length=100)

class Team_Player(models.Model):
    team = models.ForeignKey(Team)
    player = models.ForeignKey(Player)

有没有办法将 Team.squad 限制为只有 Team.player 关系内的玩家?到目前为止,我试图使用 limit_choices_to 没有运气。有什么线索吗?

【问题讨论】:

  • 我认为您的 Team_Player 模型可能有些冗余。您能描述一下您要完成的工作吗?
  • 模型结构看起来很乱。除此之外 - 你可以覆盖 save() 方法或使用docs.djangoproject.com/en/dev/ref/signals/… PRE-SAVE 信号来检查一个小队是否只有球队的球员,如果不匹配则引发 ValueError。
  • 我相信您正在寻找这个:stackoverflow.com/questions/4621494/…
  • 你是*(无法编辑我之前的评论)

标签: python django manytomanyfield limit-choices-to


【解决方案1】:

在 Django ORM 中没有办法做到这一点。您将需要重构您的设计,使团队由小队组成,而小队由球员组成;向团队模型中添加属性或方法以获取当前团队中的所有玩家。

【讨论】:

    猜你喜欢
    • 2017-05-27
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    相关资源
    最近更新 更多