2017-02-01 5 views
-1

Мне нужна помощь, определяющая модели в Django. Что мне нужно:Модели Django: подберите существующих игроков для команды в администрации

  • игроков,
  • и команды.

С точки зрения отношений:

  • 1 игрок может быть членом только в одной команде (или нет команды) в то время,
  • и (очевидно) команды могут включать в себя только существующих игроков.

Поэтому я полагаю, что между командами и игроками должно быть отношение «один ко многим». То, что я хотел бы иметь в админ стороне Django является:

1) при создании/редактировании игрока: выпадающий список, чтобы забрать команду,

2) и при создании/редактировании команда, возможность создания списка игроков из существующего списка (например, «Добавить» из раскрывающегося списка).

В то время как 1) автоматически при добавлении ForeignKey к командам в модели для игроков, я не знаю, как достичь 2).

Say мои модели:

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

решение Простейшие является добавление еще одну таблицу, чтобы написать о команде игрока к нему.

Для редактирования, я думаю, что вы ищете что-то вроде 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] 
+0

С моделями, как я скопировал их в моем вопрос, или где-то с ForeignKey? – GuitarExtended

+0

Я добавил файл models.py – mislavcimpersak

+0

Спасибо за редактирование, но это не делает то, что мне нужно. С admin.TabularInline я могу создавать новых игроков из профиля Team, но мне нужно выбрать игроков из списка существующих игроков. – GuitarExtended

Смежные вопросы