我有一个模型限制了小数位数:
lat = models.DecimalField(max_digits=8, decimal_places=5, null=True, blank=True)
我从中创建了一个ModalForm
但是如果他们提交了超过5位的内容,我想限制小数位数。所以我做了一个自定义的清理方法:
def clean_lat(self):
lat = self.cleaned_data['lat']
return round(lat, 4)
但它仍然提出了一个ValidationError
,我有更多的小数位,然后允许。我做错什么了?你知道吗
那个表格.u有效吗方法做一件非常简单的事情:
我建议你进入源代码(django/forms)/表单.py),很快就会找到原因。你知道吗
有两种方法可以解决这个问题。你知道吗
第一种方法是像这样重写modelform
init
方法这将禁用modelform的小数位数和最大位数有效性。那么您的
clean_lat
方法应该确保表单数据验证。模型仍将截断/舍入/验证十进制值。你知道吗第二种选择是从模型中删除
max_digits=8, decimal_places=5
,并确保在formsclean_lat
方法中进行验证。如果不使用ModelForm
保存对象,则会产生问题。你知道吗相关问题 更多 >
编程相关推荐