Django:定制特定表单字段的HTML
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情
 class ItemForm(forms.ModelForm):
     description = forms.CharField(label='Description', max_length=250, widget=forms.Textarea, required=False)
     image = forms.ImageField(label='Item Picture', max_length=50, required=False)
     start = forms.DateField(widget=SelectDateWidget, required=False)
     end = forms.DateField(widget=SelectDateWidget, required=False)
     cost_price = forms.CharField(label='Cost Price Per Unit', widget=???, max_length=5)

     class Meta:
         model = Item
         fields = ('image',
                   'name',
                   'description',
                   'quantity',
                   'start',
                   'end',
                   'cost_price',
                   'selling_price',
                   )

I need to include a text variable in front of the cost_price field.

From the docs, I know that the widget class is what I need to modify but I'm not too sure on how to go about doing it.

UPDATE

So each field in my form is represented by {{ field }} in my template. This {{ field }} generates the HTML for that particular field. I would like to modify the HTML of the cost_price field such that I can append a variable {{ currency_type }} to the front of the HTML. So it should look something like this:

<span>USD</span><input type="text" name="cost_price" id="id_cost_price">

Right now I am including this {{ currency_type }} variable through template logic. I was wondering if I could do this through customizing the form field's HTML hence the question. Hope this explains it better!

#0

You can create custom form widget that inherits from the TextInput widget (which is used for CharField) and overrides it's render method. That way you can do exactly what you want to - insert custom HTML before regular TextInput widget HTML.

from django.utils.safestring import mark_safe
from django.forms import widgets

# ...

# your custom widget class
class CostPriceWidget(widgets.TextInput):
    def render(self, name, value, attrs=None):
        return mark_safe(u'''<span>USD</span>%s''' % (super(CostPriceWidget, self).render(name, value, attrs)))

# your form class
class ItemForm(forms.ModelForm):
    # ...
    cost_price = forms.CharField(label='Cost Price Per Unit', widget=CostPriceWidget, max_length=5)
    # ...

Hope this helps.

推荐文章

Android动画视图从屏幕外不工作

Android动画视图从屏幕外不工作

推荐文章

提交的表单值不会显示在相应的视图中

提交的表单值不会显示在相应的视图中

推荐文章

实际插入行ID

实际插入行ID

推荐文章

什么是交换(左,上)和(右,下)点的树?

什么是交换(左,上)和(右,下)点的树?

推荐文章

转换数据帧从字符到因子的列格式

转换数据帧从字符到因子的列格式

推荐文章

将对象传递到Web服务的方法

将对象传递到Web服务的方法

推荐文章

到AS3的闪存IDE路径

到AS3的闪存IDE路径

推荐文章

有点像是准备好了,但在回去的时候

有点像是准备好了,但在回去的时候

推荐文章

Cookie或Javascript

Cookie或Javascript

推荐文章

jquerylive/delegate/on与重新注册事件处理程序相比,哪个更适合AJAX?

jquerylive/delegate/on与重新注册事件处理程序相比,哪个更适合AJAX?

推荐文章

如何在UILabel中设置递增数字的动画

如何在UILabel中设置递增数字的动画

推荐文章

如何有效地修改std::map?

如何有效地修改std::map?

推荐文章

div中的CSS自定义滚动条

div中的CSS自定义滚动条

推荐文章

只有在本地构建的数组中找不到结果时,才在jquery自动完成中使用ajax调用

只有在本地构建的数组中找不到结果时,才在jquery自动完成中使用ajax调用

推荐文章

Webstorm远程调试+调试时编辑本地javascript文件

Webstorm远程调试+调试时编辑本地javascript文件

推荐文章

Android Roboguice异常

Android Roboguice异常