假设我有100个玩家和10个团队,我如何从FroreignKey
下拉选择器中移除任何已经被另一个团队选中的玩家?
在SpielerTeamRelationshipModel
内我有player = models.ForeignKey(Spieler)
,我希望不要显示已经被其他球队选中的球员。这可能吗?
class Spieler(models.Model):
name = models.CharField(max_length=128)
vorname = models.CharField(max_length=128)
panels = [
FieldPanel('name', classname="col6"),
FieldPanel('vorname', classname="col6"),
]
class SpielerTeamRelationshipModel(models.Model):
player = models.ForeignKey(Spieler)
in_team_seit = models.DateField()
page = ParentalKey('TeamRooster',
related_name='spieler_in_team')
panels = [
FieldPanel('player', classname="col6"),
FieldPanel('in_team_seit', classname="col6")
]
class TeamRooster(Page):
content_panels = [
FieldPanel('title'),
InlinePanel(
'spieler_in_team', label="Spieler",
panels=None)
]
一名球员只能在一支球队中。一支球队可以拥有一名或多名球员。非常方便的是InlinePanel
,但是每次从100选择一个玩家,这是非常难以忍受的。
或许我做得不对,有更聪明的方法来解决这个问题?
答案 0 :(得分:1)
奇怪,但没有人提到unique_together。它将帮助您在团队和玩家之间建立独特的关系。
class Player(models.Model):
name = models.CharField(max_length=128)
team = models.ForeignKey(Team, blank=True, null=True)
class Meta:
...
unique_together = ("id", "team")
或有时候你会需要这个
class Meta:
...
unique_together = ("name", "team")
祝你好运!
答案 1 :(得分:0)
而不是让球员成为球队中的FK
您可以通过在Player表中将团队作为FK来解决问题