Django Admin中的动态只读字段

时间:2017-12-20 14:26:31

标签: django django-forms django-admin

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

  1. 可在创作时修改
  2. 其中一些更新(基于创建时的实例字段值)。
  3. 例如:

    2-1。如果属性a包含值,则属性cb对应的字段只能读取

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

    我知道对于普通表单,存在字段disabled属性。

    我知道我需要覆盖管理员表单,但我不知道,在表单初始化时知道​​是创建还是更新。

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

1 个答案:

答案 0 :(得分:1)

所以就是这样:

  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

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