将图像显示为表单中ChoiceField的属性

时间:2013-09-23 09:55:29

标签: django django-forms

您有一个选择字段

   class PropertyReportForm(forms.Form):    
    property = forms.ChoiceField(widget = forms.RadioSelect,required = False)
    def __init__(self,*args,**kwargs):
        properties = kwargs.pop('properties')               
        property_choice = []
        for property1 in properties:                        
            index = (property1.id,"Name :"+property1.name+" Area:"+str(property1.area)+" "+property1.image)
            property_choice.append(index)                
        super( PropertyReportForm, self).__init__(*args, **kwargs)
        self.fields['property'].choices = property_choice

现在在显示时我希望它显示 Like this

我该怎么做? 模板代码类似于我想要的。这不起作用。但我想要这个

 {% for field in propertyreportform %}
     {{ field }}    <img src="/media/{{ field.image }}" />                                                  
  {% endfor %}

1 个答案:

答案 0 :(得分:1)

要解决此问题,您基本上有三个选项:

  1. 创建自己的渲染器,并将其用作ChoiceField的参数,遗憾的是,您需要从头创建它,因为django不允许您简单地覆盖RadioFieldRenderer类。 https://github.com/django/django/blob/1.5.4/django/forms/widgets.py#L693

  2. 只需循环选择并使用手动创建的无线电输入标签,无需进行大量验证,检索所选项目或模型对象也非常简单。

  3. 最简单且不太推荐的方法可能是将整个图像标记包含在标签字符串中(使用设置来获取媒体网址部分)。