2013-07-12 13 views
15

を作成していない私はTeamモデル聖霊降臨祭playersのManyToManyFieldを持っている、と私は作成したときに、新しいチームにPlayer Sを追加できるようにしたいが、それを変更することはできません後に作成されました。 Djangoの読み取り専用のみの変更で、フィールドが、

は、私はこのような読み取り専用 players場を作る場合:

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

admin.site.register(Team, TeamAdmin) 

私は新しいTeamにプレーヤーを追加することはできません。 playersフィールドを「作成後に読み取り専用」などにするにはどうすればよいですか?

答えて

32

管理クラスのメソッドget_readonly_fields()を上書きする必要があります。

# 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

完璧、ありがとう! – kissgyorgy