如何自定义Django表单小部件? - Django
我遇到了一点小问题!
我发现有一种被大家普遍接受的方法,可以用来定制Django后台的字段。
from django import forms
from django.utils.safestring import mark_safe
class AdminImageWidget(forms.FileInput):
"""
A ImageField Widget for admin that shows a thumbnail.
"""
def __init__(self, attrs={}):
super(AdminImageWidget, self).__init__(attrs)
def render(self, name, value, attrs=None):
output = []
if value and hasattr(value, "url"):
output.append(('<a target="_blank" href="%s">'
'<img src="%s" style="height: 28px;" /></a> '
% (value.url, value.url)))
output.append(super(AdminImageWidget, self).render(name, value, attrs))
return mark_safe(u''.join(output))
我需要访问模型中的其他字段,以便决定如何显示这个字段!
举个例子:
假设我在记录一个值,我们称之为销售额。
如果我想根据另一个字段来定制销售额的显示方式,我们称这个字段为转化率。
但是,当我想要修改销售额的显示方式时,似乎没有直接的方法可以访问转化率这个字段!
如果有人能提供解决办法,我将非常感激!谢谢 :)
2 个回答
1
你可能想要为管理后台使用一个自定义表单。
1
你说得对,这些小部件本身是独立的。我想到的一个更复杂的做法是,提供一个自定义的管理模板来实现你想要的功能,或者传入一段JavaScript代码来处理那些相互关联的字段(就像预填充字段的工作方式一样)。