Django Admin中的动态只读字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django Admin中的动态只读字段相关的知识,希望对你有一定的参考价值。

在模型的Django Admin中,我希望所有字段都是:

  1. 可编辑的创作
  2. 其中一些更新(基于创建时的实例字段值)。

例如:

2-1。如果属性a具有值,则对应于属性cb的字段将是只读的

2-2。如果属性在创建后为空,则在更新时不应编辑

我知道对于普通形式有Field disabled属性。

我知道我需要覆盖Admin表单,但是我没有想法,知道在表单初始化时创建或更新。

通常我使用clean()获取值,但是在这里我需要在更新时进行初始化。

答案

所以它是这样的:

  1. 您可以创建自定义FORMS,请参阅此处https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form
  2. 之后,您可以通过覆盖get_form方法添加要使用的逻辑。看到这里https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_form

但是,您需要确保您的数据库将接受部分提交的数据。您可以在特定列上DROP NULL。

以上是关于Django Admin中的动态只读字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django admin 上添加只读内联

django admin如何在只读字段上显示小部件

python 为Django Admin设置所有字段只读

在 Django 1.11 admin 中创建新对象时评估只读字段

Django admin:将必填字段设为只读

Django Admin 中的动态字段