2013-07-12 5 views
15

Ho un modello Team con players ManyToManyField e voglio essere in grado di aggiungere Player s a un nuovo team quando viene creato, ma non è in grado di modificarlo dopo la creazione.Django in sola lettura solo sul cambiamento, ma non durante la creazione

se faccio il campo players sola lettura come questo:

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

admin.site.register(Team, TeamAdmin) 

non sarà in grado di aggiungere i giocatori a un nuovo Team. Come posso rendere il campo players "readonly after created" o qualcosa del genere?

risposta

32

È necessario eseguire l'override del metodo get_readonly_fields() della classe di amministrazione.

# 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

Perfetto, grazie! – kissgyorgy