Django Tabular in Line示例

时间:2014-10-23 22:32:14

标签: django django-models django-admin

我真的需要有人来解释/告诉我如何在我的示例的 django admin 控制台中实现TabularInline显示。有人可以帮帮我吗?

我的模型如下:

from django.db import models

class Player(models.Model):
    player_id = models.IntegerField(primary_key=True)
    team = models.ForeignKey(Team)
    player_name = models.CharField(max_length=140)
    position = models.CharField(max_length=10)
    def __str__(self):
        return '%s' % (self.player_name)

class MatchdayStats(models.Model):
    MATCHDAY_STATS_ID = models.AutoField(primary_key=True)
    appeared = models.BooleanField(default=False)
    goal = models.IntegerField(default=0)
    minutes_under_60 = models.BooleanField(default=False)
    minutes_60 = models.BooleanField(default=False)
    assist =  models.IntegerField(default=0)
    def __str__(self):
        return '%s' % (self.MATCHDAY_STATS_ID)

class PlayerGameweekStats(models.Model):
    PLAYER_GAMEWEEK_ALLSTATS_ID = models.AutoField(primary_key=True)
    player = models.ForeignKey(Player)
    gameweek = models.ForeignKey('fixturesresults.Gameweek')
    matchday_stats = models.ForeignKey(MatchdayStats)
    def __str__(self):
        return '%s (gw=%s,msid=%s)' % (self.player.player_name,self.gameweek.GAMEWEEK_ID,self.matchday_stats.MATCHDAY_STATS_ID)

我希望有一个PlayerGameweekStats模型的表格显示,您可以在其中为每个玩家输入MatchdayStats个字段。

以下管理代码会导致外键错误<class 'playerteamstats.models.MatchdayStats'> has no ForeignKey to <class 'playerteamstats.models.PlayerGameweekStats'>

class StatsInLine(admin.TabularInline):
    model = MatchdayStats

class PlayerGameweekStatsAdmin(admin.ModelAdmin):
    list_display = ('player', 'gameweek')
    exclude = ('gameweek')
    inlines = [
        StatsInLine,
    ]

admin.site.register(PlayerGameweekStats, PlayerGameweekStatsAdmin)

1 个答案:

答案 0 :(得分:0)

要构建TabularInline模型,需要使用ForeignKey进行连接。 来自Django docs example

models.py:

from django.db import models

class Author(models.Model):
   name = models.CharField(max_length=100)

class Book(models.Model):
   author = models.ForeignKey(Author)
   title = models.CharField(max_length=100)

admin.py:

from django.contrib import admin

class BookInline(admin.TabularInline):
    model = Book

class AuthorAdmin(admin.ModelAdmin):
    inlines = [
        BookInline,
    ]

在你的情况下,你需要在MatchdayStats中将ForeignKey设置为PlayerGameweekStats。