Я пытался добавить проверку даты, выбранной в средстве выбора календаря, идея заключается в том, что если пользователь, выбравший дату в будущем, получит сообщение о том, что она не может быть будущей датой.
Это одна из тех вещей, которые я пробовал до сих пор:
views.py
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)
forms.py
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'})
}
models.py
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')
Traceback
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'