Django只读字段只有在更改时,而不是创建时 [英] Django readonly field only on change, but not when creating

查看:268
本文介绍了Django只读字段只有在更改时,而不是创建时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个团队 model whit 玩家 ManyToManyField,我想要添加 Player s创建时,新的团队,但创建后无法修改。

I have a Team model whit players ManyToManyField, and I want to be able to add Players to a new team when created, but not able to modify it after created.

如果我使 players field readonly like this:

If I make the players field readonly like this:

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

admin.site.register(Team, TeamAdmin)

我将无法将玩家添加到新的团队中。
如何使玩家字段创建后只读或类似的东西?

I will not be able to add players to a new Team. How can I make the players field "readonly after created" or something like that?

推荐答案

您需要覆盖 get_readonly_fields() 您的管理员类的方法。

You need to override get_readonly_fields() method of your admin class.

# 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 []

这篇关于Django只读字段只有在更改时,而不是创建时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆