2013-02-27 66 views
-7

我在这里,因为我有一个问题。我正在制作一个关于所有球员,锦标赛,球队等足球(足球)的网站,我无法修正:足球数据库

我创建了第一张表,玩家。接下来,另一支球队。我不知道我是否必须加入一个球员或一个球队的球员。否则,我需要一个比赛系统,统计每个球员,这是我的问题。使用Django,我无法获得队伍的球员列表。

好了,这是我的计划:

- Player 
--- Name 
--- First Name 

- Team 
--- Name 
--- Player() 

- Championship 
--- Name 
--- Team() 

- Match 
--- Championnat() 
--- date 

- Goal 
--- Match 
--- Player 
--- Score 

我想这样的一个表:

ASSE    PSG 
Player 1 0 0 Player 1 
Player 2 0 0 Player 2 
Player 3 0 0 Player 3 
Player 4 0 0 Player 4 
Player 5 0 0 Player 5 
Player 6 0 0 Player 6 
Player 7 0 0 Player 7 
Player 8 0 1 Player 8 
Player 9 1 0 Player 9 
Player 10 0 0 Player 10 
Player 11 1 0 Player 11 
Player 12 0 0 Player 12 
Player 13 0 0 Player 13 
      2 1 

如何做到这一点?

回答

4

忘记Django的或实现与关系开始:

A LEAGUE has two or more TEAMs 
A TEAM has zero or more PLAYERs 
A MATCH happens at a specific LOCATION and TIME, involving two TEAMs. 
A TEAM plays in zero or more MATCHes. (Hint: many-to-many JOIN needed.) 

想简单。获得正确的关系,然后建立你的模式。

0

这是有点不清楚你到底在问什么。如果你想通过哪些表来引用其他表,那么你会希望玩家表引用一个团队(因为多个玩家将在单个团队中,但从来没有多个团队在单个玩家)

class Player(models.Model): 
    name = models.CharField(max_length=64) 
    first_name = models.CharField(max_length=32) 
    team = models.ForeignKey('Team') 


class Team(models.Model): 
    name = models.CharFIeld(max_length=32) 

    def __unicode__(self): 
     return self.name 

这种方式如果你想知道一个球员是什么队,那么你最终只会打电话Player.team,它会返回队的__unicode__功能。我相信在这个例子中,你应该能够解析出你必须做的其余表格。

其他帮助:https://docs.djangoproject.com/en/dev/topics/db/models/

编辑 如果你正在寻找有Team观看与播放器(反之亦然),则:

admin.py

from site.models import Team, Player 

class PlayerTeamInline(admin.StackedInline) 
    model = Team 
    extra = 0 #so only one record will show up inline 

class PlayerAdmin(PlayerAdmin): 
    list_display = ('name', 'team') 
    search_fields = ['name', 'team'] 
    inlines = (PlayerTeamInline,) 

class PlayerInline(admin.StackedInline) 
    model = Player 

class TeamAdmin(TeamAdmin): 
    inlines = (PlayerInline,) 


admin.site.unregister(Player) 
admin.site.register(Player, PlayerAdmin) 

admin.site.unregister(Team) 
admin.siteregister(Team, TeamAdmin) 

这将在Player页面上列出Team,并且w看看Player的列表,你会看到团队专栏,以及有能力通过Team进行搜索。但是,所有这些都在文档中涵盖。

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.inlines

+0

我并不精确,但我的问题是关于我的管理面板... 你说什么,我的错误就解决了,因为没有匹配系统。而且,只有使用模型,我不能在团队中访问团队的球员,这是我需要的。 而且,多支球队可以拥有同一名球员(如罗纳尔多:葡萄牙和皇马),不是吗? – cmizzi 2013-02-27 19:23:01

+0

我编辑了我的答案,我想你在问如何自定义管理视图/面板。从“玩家”列表中你可以做很多事情(你可以让它显示他们所在的团队),或者你可以在线显示它们。 – GordonsBeard 2013-02-27 19:33:18

+0

这不是我想要的。 我想,当我编辑我的球队时,例如让我成为球员中的球员。你明白我的意思吗 ? – cmizzi 2013-02-27 19:58:06