我的models.py中有一个 FloatField ,它必须存储(除其他外)分钟,秒和毫秒。以 ss.ms 的格式存储它们并不重要,但我必须提供以 ModelForm 格式插入它们的可能性。 > mm.ss.ms 。
问题是, mm.ss.ms 的表单验证不符合 FloatField ,我很难找到解决方法。
_clean 函数很棒,但是在Django验证之后运行。如何清除Django验证之前之前的数据?
from django.db import models
class Result(models.Model):
date = models.DateField()
result = models.FloatField()
rank = models.IntegerField(blank=True, null=True)
class AddResult(forms.ModelForm):
class Meta:
model = Result
fields = ('result', 'rank', 'date')
def __init__(self, *args, **kwargs):
self.profile = kwargs.pop('profile', None)
super(AddResult, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.label_class = 'form-label-div'
self.helper.field_class = 'form-field-div'
self.helper.label_class = 'col-xs-4'
self.helper.field_class = 'col-xs-8'
self.helper.layout = Layout(
Div(
Div(
'result',
css_class="col-xs-4",
),
Div(
'rank',
css_class="col-xs-4",
),
css_class="row",
),
Div(
Div(
'date',
css_class="col-xs-4",
css_id="date-picker"
),
Div(
css_class="col-xs-4",
css_id="date-picker"
),
css_class="row",
)
)
def save(self, commit=True):
result = super(AddResult, self).save(commit=False)
if self.profile:
result.profile = self.profile
result.save()
PS!最初我写道我有一个有问题的 IntegerField ,但那是一种大脑放屁。我们当然在谈论 FloatField 。主要问题仍然存在。
答案 0 :(得分:1)
我建议您不要使用模型表单而是使用forms.form并在** form.is_valid()**之前的视图中尝试使用REQUEST方法检索表单字段。 可能会有所帮助。