Django readonly字段仅在更改时,但在创建时不会

kis*_*rgy 20 django django-models django-admin

我有一个名为ManyToManyField 的Team模型players,我希望能够Player在创建时将s 添加到新团队,但在创建后无法修改它.

如果我players只读这样的字段:

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

admin.site.register(Team, TeamAdmin)
Run Code Online (Sandbox Code Playgroud)

我将无法将玩家添加到新玩家Team.如何使players字段"创建后只读"或类似的东西?

Sud*_*pta 44

您需要覆盖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 []
Run Code Online (Sandbox Code Playgroud)