2011-01-05 10 views
0

Wie zeigen Sie Formulare für die Kinder eines bestimmten Modells im Django Admin Panel an?Inline-Formulare in Django 1.1 Admin Panel

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) 

Jedes Matchup wird zwei Slots haben - wie würde ich das Anzeigen von Formularen für beide im Einklang mit dem Match gehen.

Grundsätzlich möchte ich so etwas haben:

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

ich es scheint klar, dass der Slot-Modell ist nutzlos und sollte nur durch zwei Verweise auf Spieler ersetzt werden, aber es gibt verschiedene Gründe, warum ich will um es so zu machen.

EDIT: entfernt verwirrend Verbände

+0

Ich verstehe nicht, warum Sie Matchup.winner und win_slot.winner auch haben. Und zeigt sich das nicht schon im Admin? – milkypostman

+0

Ah, ja - zur Klarstellung: Die über den Fremdschlüssel angebrachten Slots und die über win_slot und lose_slot angebundenen Slots sind nicht gleich. –

Antwort

1
from models import * 

class SlotInline(admin.StackedInline): 
    model = Slot 

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

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

Perfekt! Danke –

+0

Follow-up-Frage: Ich möchte die Slots bei der Erstellung eines Matchup gespeichert werden, auch wenn sie in keiner Weise geändert werden (z. B. alle Felder leer gelassen) - gibt es eine einfache Möglichkeit, dies zu tun? –

+0

Ich denke, dass dies erreicht wird, solange das Slots-Modell leere Einträge erlaubt. Ist das nicht passiert? – milkypostman