2013-07-12 6 views
15

Ich habe ein Team Modell mit players ManyToManyField, und ich möchte Player s zu einem neuen Team hinzufügen, wenn erstellt, aber nicht in der Lage, es nach dem Erstellen zu ändern.Django readonly Feld nur auf Änderung, aber nicht beim Erstellen

Wenn ich machen das players Feld nur lesbar wie folgt aus:

# admin.py 
class TeamAdmin(admin.ModelAdmin) 
    readonly_fields = ['players'] 

admin.site.register(Team, TeamAdmin) 

ich nicht in der Lage sein wird, die Spieler zu einem neuen Team hinzuzufügen. Wie kann ich das players Feld "readonly nach dem Erstellen" oder etwas ähnliches machen?

Antwort

32

Sie müssen get_readonly_fields() Methode Ihrer Admin-Klasse überschreiben.

# admin.py 
class TeamAdmin(admin.ModelAdmin) 
    ... 

    def get_readonly_fields(self, request, obj=None): 
     if obj: #This is the case when obj is already created i.e. it's an edit 
      return ['players'] 
     else: 
      return [] 
+0

Perfekt, danke! – kissgyorgy

Verwandte Themen