2011-01-05 9 views
0

Как вы отображаете формы для дочерних элементов определенной модели в панели администратора Django?Встроенные формы в Django 1.1 Панель администратора

class Matchup(models.Model): 
    name  = models.CharField(max_length=30) 
    winner  = models.ForeignKey('players.player',blank=True)   

class Slot(models.Model): 
    player = models.ForeignKey('players.player',blank=True) 
    matchup = models.ForeignKey(Matchup) 

В каждом матче будет два слота - как бы я мог отображать формы для них обоих в соответствии с совпадением.

В принципе, я хочу, чтобы иметь что-то вроде этого:

Matchup Name:  [   ] 
Matchup Winner: [   ] 
-- 
== Slot 1 == 
|| Slot Player: [   ] 
== Slot 2 == 
|| Slot Player: [   ] 

Я понимаю, что это может показаться, что модель слота бесполезна и должна только быть заменены два ссылками на игрок, но есть разные причины, которые я хочу сделать так.

EDIT: удалены запутанные ассоциации

+0

Я не понимаю, почему у вас есть Matchup.winner и win_slot.winner также. И разве это уже не появляется в администраторе? – milkypostman

+0

Ах, да - уточнить: слоты, прикрепленные через внешний ключ, и слоты, прикрепленные через win_slot и lose_slot, не совпадают. –

ответ

1
from models import * 

class SlotInline(admin.StackedInline): 
    model = Slot 

class MatchupAdmin(admin.ModelAdmin): 
    model = Matchup 
    inlines = [SlotInline] 

admin.site.register(Matchup, MatchupAdmin) 
+0

Отлично! Спасибо –

+0

Следующий вопрос: я хочу, чтобы слоты сохранялись при создании Matchup, даже если они не были изменены каким-либо образом (например, все поля оставлены пустыми) - есть ли простой способ сделать это? –

+0

Я думаю, что это будет достигнуто, если модель Slots позволяет использовать пустые записи. Разве это не происходит? – milkypostman

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