1) Django的字段没有被插件DJANGO,默认为窗口小部件和DecimalField
为IntegerField
是TextInput
。
而从this note您的声明将覆盖amount
字段的默认行为。但是存储的数据在Decimal
类型不int
所以如果你想代表它在int
你应该做的水木清华这样的:
int(Decimal())
或阅读Decimal docs
和设置自定义舍入。
2)在这个步骤中,您需要不便指定您的自定义渲染,所以有变化,你如何能做到这一点的数量(在这一刻我还记得他们两个人):
2.1)简单的一个 - 覆盖的ModelForm INIT初始数据:如果您需要在花式小部件的定制表示你可以覆盖)
class AmountInfoForm(forms.ModelForm):
class Meta:
model = Customer
fields = ('amount',)
def __init__(self, *args, **kwargs):
super(AmountInfoForm, self).__init__(*args, **kwargs)
amount_initial = self.initial.get('amount')
if amount_initial:
self.initial['amount'] = int(amount_initial)
2.2TextInput
(look at the source),并指定我t in your class Meta
docs:
class YourCustomWidget(TextInput):
def render(self, name, value, attrs=None):
if value is None:
value = ''
final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
if value != '':
# Only add the 'value' attribute if a value is non-empty.
custom_value = int(value)
final_attrs['value'] = force_text(self._format_value(custom_value))
# here you can customise output html
return format_html('<input{0} />', flatatt(final_attrs))
class AmountInfoForm(forms.ModelForm):
class Meta:
model = Customer
fields = ('amount',)
widgets = {
'amount': YourCustomWidget(),
}
@madzohan你在说什么解决方案是? – Atma 2014-11-05 19:01:40
忘了它,我是不留神)指定自定义的部件为这个领域,并在该部件覆盖渲染方法 – madzohan 2014-11-05 19:48:59
@madzohan你知道一个例子或它在文档中的位置吗?从几次尝试看来,整数字段没有渲染方法。 – Atma 2014-11-05 21:42:07