根据值在 Admin 中自定义 Django 表单字段

Posted

技术标签:

【中文标题】根据值在 Admin 中自定义 Django 表单字段【英文标题】:Customizing a Django Form Field in Admin Based on Value 【发布时间】:2011-06-15 08:14:56 【问题描述】:

如何根据表单字段的值在 Django 的管理中自定义表单的显示?例如,我有一个默认值为“0”的字段。如果该字段已设置为非零值,我想在表单上显示一个额外的“编辑”链接,该链接将链接到一个单独的页面,允许编辑与相关模型相关的其他字段。我找到了如何自定义管理员的表单模板,但我找不到如何访问表单字段的实际值以便在模板中添加 if/else 语句。

我已尝试深入研究源代码,并将我的字段实例跟踪到django.contrib.admin.AdminField.field->django.forms.BoundField,但显示 BoundField 的字段和数据属性并未显示存储在默认表单字段小部件标记中的值。如何访问模板中特定字段的数据值,以便执行以下操作?

% for fieldset in inline_admin_form %
    % for line in fieldset %
        % for field in line %
            field.field % if field.field.value != 0 %<a href="/some/path/to/model/field.value">Edit</a>% endif %
        % endfor %
    % endfor %
% endfor %

【问题讨论】:

【参考方案1】:

刚刚在 shell 会话中输入随机变量 (ipython ftw) 并发现:

boundfield.data = data
boundfield.field.initial = initial

% for field in form %
   % if field.data != field.field.initial %Not Initial% endif %
% endfor %

试一试!

【讨论】:

以上是关于根据值在 Admin 中自定义 Django 表单字段的主要内容,如果未能解决你的问题,请参考以下文章

python/django models中自定义用户认证及django admin自定义

python/django models中自定义用户认证及django admin自定义

在 Django 中自定义管理表单,同时使用自动发现

如何在 Django 1.7 中自定义管理页面?

如何在 Django CRUD 中自定义 auth.User 管理页面?

Django:如何在管理表单中获取当前用户?