This should work for you.
from django import forms from models import Dates class Form(forms.ModelForm): fromdate = forms.DateField() todate = forms.DateField() class Meta: model = Dates def clean(self): form_fromdate = self.cleaned_data.get('fromdate') form_todate = self.cleaned_data.get('todate') between = Dates.objects.filter(fromdate__gte=form_fromdate, todate__lte=form_todate).exists() if between: raise forms.ValidationError("Period already between this dates") super(Form, self).clean()
EDIT
#views.py #!/usr/bin/env python # -*- coding: utf-8 -*- from django.http import HttpResponse from django.template import RequestContext from django.shortcuts import render_to_response from forms import Form def index(request, template='index.html'): form = Form() if request.method == "POST": form = Form(request.POST) if form.is_valid(): return HttpResponse(form) kwvars = { "form": form, } return render_to_response(template, kwvars, context_instance=RequestContext(request))
#forms.py from django import forms from models import Dates class Form(forms.ModelForm): fromdate = forms.DateField() todate = forms.DateField() class Meta: model = Dates def clean(self): form_fromdate = self.cleaned_data.get('fromdate') form_todate = self.cleaned_data.get('todate') between = Dates.objects.filter(fromdate__gte=form_fromdate, todate__lte=form_todate).exists() if between: raise forms.ValidationError("Period already between this date 1") super(Form, self).clean()
#index.html <html> <head> </head> <body> <form action="" method="POST"> {% csrf_token %} {% if form.errors %} errors: {{ form.errors }} {% endif %} {{ form }} <input type="submit" value="submit"> </form> </body> </html>
source share