0

我正在创建一个小网站来注册体育赛事结果。我有以下两个模型:

  • 团队
  • 球员(球队)
  • 匹配
  • 进球(由球员在比赛中得分)

更详细地说:

class Team(models.Model):
    name = models.CharField(max_length=255)

class Player(models.Model):
    team = models.ForeignKey(Team)
    name = models.CharField(max_length=255)
    total_goals = models.IntegerField(default=0)

    def __unicode__(self):
        return u"%s (%s)" % (self.name, self.team)


class Match(TimeStampedModel):
    competition = models.ForeignKey(Competition)
    league = models.ForeignKey(League, null=True, blank=True)  # null==True, ha osztalyozo

    home = models.ForeignKey(Team, related_name="merkozes_home")
    away = models.ForeignKey(Team, related_name="merkozes_away")
    home_score = models.SmallIntegerField(blank=True, null=True)
    away_score = models.SmallIntegerField(blank=True, null=True)
    goal_list = models.ManyToManyField(Player, through='Goal')

    @property
    def winner(self):
        return self.home if self.home_score > self.away_score else self.away

    @property
    def loser(self):
        return self.home if self.home_score < self.away_score else self.away

    class Meta:
        unique_together = (('league', 'home', 'away'),)

    def __unicode__(self):
        return u"%s - %s (%s)" % (self.home, self.away, self.competition)


class Goal(TimeStampedModel):
    player = models.ForeignKey(Player)
    ,atch = models.ForeignKey(Match)
    goals = models.SmallIntegerField(default=0)
    self_goal = models.BooleanField(default=False, blank=True)

我想在 django 管理员下编辑目标和比赛细节。因此,我创建了以下管理模型:

class GoalsInline(admin.TabularInline):
    model = Goal
    extra = 1

@admin.register(Match)
class MerkozesAdmin(admin.ModelAdmin):
    inlines = [GoalsInline]

奇怪的是,我的管理员内联不显示player字段,只显示Goal模型中的其他字段。我也检查了html代码,它甚至不是隐藏字段。

您知道这可能是什么原因吗?如何才能显示所有字段?

4

1 回答 1

1

GoalsInline将只显示Player对象的选择字段,因为它是 ForeignKey。

一种替代方法是Player在管理员中注册类以使加号显示在内联中,以便您可以Player从该内联中添加新对象。

@admin.register(Player)
class PlayerAdmin(admin.ModelAdmin):
    pass

从管理员

于 2014-10-08T19:42:36.967 回答