sup*_*er9 9 django django-forms
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',
)
Run Code Online (Sandbox Code Playgroud)
我需要在cost_price字段前面包含一个文本变量.
从文档中,我知道widget类是我需要修改的,但我不太清楚如何去做.
UPDATE
因此,我的表单中的每个字段都{{ field }}在我的模板中表示.这{{ field }}将为该特定字段生成HTML.我想修改cost_price字段的HTML,以便我可以将变量附加{{ currency_type }}到HTML的前面.所以看起来应该是这样的:
<span>USD</span><input type="text" name="cost_price" id="id_cost_price">
Run Code Online (Sandbox Code Playgroud)
现在我{{ currency_type }}通过模板逻辑包含这个变量.我想知道我是否可以通过自定义表单字段的HTML来实现这个问题.希望这能解释得更好!
Mis*_*hor 18
您可以创建继承自TextInput小部件(用于CharField)的自定义表单小部件,并覆盖它的呈现方法.这样您就可以完全按照自己的意愿行事 - 在常规TextInput小部件HTML之前插入自定义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)
# ...
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
5345 次 |
| 最近记录: |