Django 获得';PostPagos';对象没有属性';清洁数据';在窗体上添加验证时出错
我一直在尝试在日历选择器中选择的日期上添加验证,其想法是,如果用户选择将来的日期,则会收到一条消息,说明该日期不能是将来的日期。 这是我迄今为止尝试过的事情之一: views.py forms.py models.py 回溯Django 获得';PostPagos';对象没有属性';清洁数据';在窗体上添加验证时出错,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我一直在尝试在日历选择器中选择的日期上添加验证,其想法是,如果用户选择将来的日期,则会收到一条消息,说明该日期不能是将来的日期。 这是我迄今为止尝试过的事情之一: views.py forms.py models.py 回溯 fecha=self.clean\u data.get('fecha')应该是clean\u data 始终相信错误消息。它的意思就是它所说的。谢谢!在实现了您的建议后,我还发现了一些其他错误,但我已经修复了它们,现在它可以正常工作了!,我现在遇到的问题是错误消息没有显示在
fecha=self.clean\u data.get('fecha')
应该是clean\u data
始终相信错误消息。它的意思就是它所说的。谢谢!在实现了您的建议后,我还发现了一些其他错误,但我已经修复了它们,现在它可以正常工作了!,我现在遇到的问题是错误消息没有显示在HTML中,无论如何,感谢您的解决方案。
class PagosCreate(CreateView):
form_class = PostPagos
template_name = "AC/add_expense.html"
def form_valid(self, form):
object = form.save(commit=False)
object.startweek, object.endweek = self.weekdatetimeconverter(
object.semana)
object.save()
return super(PagosCreate, self).form_valid(form)
def weekdatetimeconverter(self, semana):
d = semana
startweek = datetime.datetime.strptime(d + '-1', "%Y-W%W-%w")
endweek = datetime.datetime.strptime(d + '-0', "%Y-W%W-%w")
return (startweek, endweek)
class PostPagos(forms.ModelForm):
def clean(self):
fecha = self.clean_data.get('fecha')
today = datetime.datetime.today()
if fecha > today:
raise forms.ValidationError(
'La Feha no puede ser mayor al día de hoy')
return self.cleaned_data
class Meta:
model = Pagos
fields = ('carro', 'pago', 'fecha', 'semana', 'renta')
widgets = {'fecha': forms.DateInput(attrs={'type': 'date'}),
'semana': forms.DateInput(attrs={'type': 'week'})
}
class Pagos(models.Model):
carro = models.ForeignKey(
Carros, on_delete=models.CASCADE, blank=False, null=False)
pago = models.DecimalField(max_digits=6, decimal_places=2)
fecha = models.DateField(
auto_now=False, auto_now_add=False, blank=True, null=True)
semana = models.CharField(max_length=20)
startweek = models.DateField(
auto_now=False, auto_now_add=False, blank=True, null=True)
endweek = models.DateField(
auto_now=False, auto_now_add=False, blank=True, null=True)
renta = models.ForeignKey(
Renta, on_delete=models.PROTECT, blank=False, null=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name_plural = "Pagos"
def get_absolute_url(self):
return reverse('pagos')
File "C:\Users\jorge.lopez\.virtualenvs\Carros-ZVuxKBiy\lib\site-packages\django\forms\forms.py", line 377, in full_clean
self._clean_form()
File "C:\Users\jorge.lopez\.virtualenvs\Carros-ZVuxKBiy\lib\site-packages\django\forms\forms.py", line 404, in _clean_form
cleaned_data = self.clean()
File "C:\Users\jorge.lopez\Documents\Personal\Carros\carros\AC\forms.py", line 82, in clean
fecha = self.clean_data.get('fecha')
Exception Type: AttributeError at /payments/add/
Exception Value: 'PostPagos' object has no attribute 'clean_data'