自定义Django表单小部件? - Django

时间:2010-05-04 15:52:33

标签: python django django-models django-admin field

我在这里遇到一些问题!


我发现以下是全球接受的自定义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 个答案:

答案 0 :(得分:1)

小部件本身是独立的,这是正确的。我做的更复杂的事情的第一个想法是提供一个自定义的管理模板,或者传入一段javascript代码来处理相互关联的字段(就像预填充字段的工作原理一样)。

答案 1 :(得分:1)

您可能想要使用custom form for the admin