如何解决ValidationError:“值必须为十进制数字”
我有以下型号:
class Listing(models.Model):
product = models.CharField(max_length=64)
description = models.CharField(max_length=200)
user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="Listings")
category = models.CharField(max_length=64,blank=True)
created = models.DateField()
starting_price = models.DecimalField(max_digits=6,decimal_places=2,default=decimal.Decimal(0))
current_price = models.DecimalField(max_digits=6,default=starting_price)
在我的views.py中,我使用Django Form类的实例向用户询问输入。
我收到以下错误信息:“““ auctions.Listing.starting_price”值必须是十进制数字。”]
但是,当我在错误页面上检查Local Vars时,可以看到starting_price = Decimal('10.00')
因此很明显拍卖的价值。Listing.starting_price是小数!没有其他条目可能会导致此问题。
我使用的表格如下:
class NewListingForm(forms.Form):
product = forms.CharField(max_length=64)
description = forms.CharField(widget=forms.Textarea)
category = forms.CharField(max_length=64,required=False)
starting_price = forms.DecimalField(max_digits=6,decimal_places=2)
发布时,我像这样评估数据:
if entry_form.is_valid():
product = entry_form.cleaned_data["product"]
description = entry_form.cleaned_data["description"]
category = entry_form.cleaned_data["category"]
starting_price = entry_form.cleaned_data["starting_price"]
然后我通过以下方式保存模型条目:
listing = Listing(product=product,description=description,user=user,category=category,created=created,starting_price=starting_price)
listing.save()
我真的很感谢任何想法。
解决方法
问题出在default=starting_price
部分:
class Listing(models.Model):
# …
current_price = models.DecimalField(
max_digits=6,decimal_places=2,default=starting_price
)
解释类本身时,starting_price
是DecimalField
,因此它将尝试将DecimalField
作为 value 分配给另一个{{1} },不是一个DecimalField
。由于Decimal
接受某些类型的对象,例如字符串,DecimalField
等,但不接受Decimal
,因此会产生错误。
您只需将值传递到DecimalField
和starting_price
,例如:
current_price
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。