python - django - Form ValidationError not working -


i'm trying raise validation error :

1) if date selected in start_date field day before today raise , error. when submit throw error

'<' not supported between instances of 'nonetype' , 'datetime.date'

2) if end date date before start date, raise error. part partially work doesn't save submitted form doesn't raise , validation error

i know not first time ask question followed answer given others , it's not working, wrong?

any appreciate.

below code :

model.py:

class leave(models.model):     employee = models.foreignkey(employee, on_delete=models.cascade, related_name='+')     start_date = models.datefield()     end_date = models.datefield()     duration = models.floatfield() 

form.py :

class leavesdetailform(forms.modelform):      class meta:         model = leave         fields = ('employee', 'type', 'status', 'start_date', 'end_date', 'duration', 'comment')         widgets = {'start_date': forms.dateinput(attrs={'type': 'date'}),                    'end_date': forms.dateinput(attrs={'type': 'date'}),                    'employee': forms.hiddeninput(),                    'duration': forms.hiddeninput(),                    'status': forms.hiddeninput()}      def clean(self):         start_date = self.cleaned_data.get("start_date")         end_date = self.cleaned_data.get("end_date")         if end_date < start_date:         msg = u"end date should greater start date."         self._errors["end_date"] = self.error_class([msg])         raise forms.validationerror("end date should greater start date.!")      def clean_start_date(self):         start_date = self.cleaned_data.get('start_date')         if self.instance.start_date < datetime.date.today():             raise forms.validationerror("the date cannot in past!")         return start_date 

view.py :

def my_leaves_view(request):     form = leavesdetailform(request.post or none)     leaves_log = leave.objects.all().filter(employee=request.user.profile.employee.id)         if form.is_valid():         inst = form.save(commit=false)         inst.start_date = form.cleaned_data['start_date']         inst.end_date = form.cleaned_data['end_date']         duration = (inst.end_date - inst.start_date).days         inst.duration = duration         inst.save()         return httpresponseredirect('my_leaves_content.html')     context = {'form': form}     return render(request, 'hrm/my_leaves/my_leaves_content.html', context) 

looks named function wrong. change clean_date clean_start_date should in format clean_function_name.

hope helps!


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -