27

我有一个带有ManyToManyField 的Team模型players,我希望能够在创建时将Players 添加到新团队,但在创建后无法对其进行修改。

如果我players像这样将字段设为只读:

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

admin.site.register(Team, TeamAdmin)

我将无法将玩家添加到新的Team. 我怎样才能使players字段“创建后只读”或类似的东西?

4

1 回答 1

58

您需要覆盖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 []
于 2013-07-12T11:35:25.570 回答