Django模型:为管理员团队挑选现有球员

时间:2017-02-01 09:47:09

标签: django django-models

我需要帮助在Django中定义模型。我需要的是:

  • 播放器,
  • 和团队。

在关系方面:

  • 一个玩家一次只能是一个团队(或没有团队)的成员,
  • 和(显然)球队只能包括现有球员。

所以我认为从球队到球员应该有一对多的关系。我想在Django的管理方面拥有的是:

1)创建/编辑玩家时:选择团队的下拉列表

2)并且在创建/编辑团队时,能够从现有列表创建玩家列表(例如,从下拉列表中“添加”)。

虽然1)在为玩家的模型中的团队添加ForeignKey时是自动的,但我不知道如何实现2)。

说我的模特是:

class Team(models.Model):
    team_name = models.CharField(max_length=100)
    def __str__(self):
        return self.team_name

class Player(models.Model):
    player_name = models.CharField(max_length=100)
    def __str__(self):
        return self.player_name

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是添加另一个表格来编写团队成员信息。

对于编辑,我的猜测是你正在寻找像InlineModelAdmin

这样的东西

models.py

from django.db import models

class Team(models.Model):
    team_name = models.CharField(max_length=100)

    def __str__(self):
        return self.team_name


class Player(models.Model):
    player_name = models.CharField(max_length=100)

    def __str__(self):
        return self.player_name


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

    def __str__(self):
        return self.player.player_name

admin.py

class TeamPlayerAdminInline(admin.TabularInlin):
    model = TeamPlayer


@admin.register(Team)
class TeamAdmin(admin.ModelAdmin):
    list_display = ['team_name']
    inlines = [TeamPlayerAdminInline]


@admin.register(Player)
class PlayerAdmin(admin.ModelAdmin);
    list_display = ['player_name']
    inlines = [TeamPlayerAdminInline]