【发布时间】:2018-01-02 07:49:55
【问题描述】:
我在 Django 模型和表单中有一个 DecimalField,同样我有一个 html 表单输入,逗号作为千位分隔符,点作为小数分隔符 (123,456.78),使用 jquery 插件Cleave.js 格式化,但是当我,尝试保存我的表单,这会显示一条消息:输入一个数字。
我想保存表单中的数据,以十进制值表示,而不会丢失 html 中的格式。
对不起!我的英语太差了。
这是我的代码:
型号
class Product(models.Model):
Price = models.DecimalField(
max_digits=17,
decimal_places=2,
default=0.00,
validators=[
MinValueValidator(
100.00,
message='>=100')])
表格
class ProductForm(forms.ModelForm):
price = forms.DecimalField(
label='Price',
label_suffix=False,
max_digits=17,
decimal_places=2,
widget=forms.TextInput(
attrs={'placeholder': '123,456.78'})
)
class Meta:
model = Product
fields = [
'price'
]
查看
class NewProduct(CreateView):
model = Product
form_class = ProductForm
template_name = 'new_product.html'
def get_success_url(self):
return reverse('products:new')
def get_queryset(self):
products = Product.objects.all()
return products
def get_context_data(self, **kwargs):
context = super(NewProduct, self).get_context_data(**kwargs)
context['products'] = self.get_queryset()
return context
HTML
<html lang="es">
<head>
<script src="{% static 'js/cleave.js' %}" type="text/javascript"></script>
</head>
<body>
<input type="text" id="price" class="price">
<script>
new Cleave('.price', {
numeral: true,
numeralDecimalMark: '.',
delimiter: ','
});
</script>
</body>
</html>
【问题讨论】:
-
你的视野里有什么?
-
我,添加视图