【问题标题】:Django readonly field only on change, but not when creatingDjango只读字段仅在更改时,但不是在创建时
【发布时间】:2013-07-10 21:59:19
【问题描述】:

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

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

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

admin.site.register(Team, TeamAdmin)

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

【问题讨论】:

    标签: django django-models django-admin


    【解决方案1】:

    您需要覆盖您的管理类的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 []
    

    【讨论】:

      猜你喜欢
      • 2019-04-16
      • 2018-11-10
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 2017-06-08
      相关资源
      最近更新 更多