私はDjangoモデルとフォームにDecimalFieldを持っています。同様に、html形式の入力があります。コンマはthounsand separatorと小数点の区切り記号(123,456.78)、jqueryプラグインCleave.jsしかし、私は、このショーの私のフォームを保存しようとするメッセージが言う:番号を入力してください。整形された入力からdjangoモデルに十進数値を渡す
フォームのデータを10進数で保存し、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>
ビューの内側には何ですか? –
私は、ビューを追加 –