Вы не можете применить это на уровне модели, однако вы можете переопределить метод сохранения на
как то так:
class Item(models.Model):
name = models.CharField(max_length=500)
startDate = models.DateField("Start Date", unique="true")
endDate = models.DateField("End Date")
def save(self, *args, **kwargs):
try:
Item.objects.get(Q(startDate__range=(self.startDate,self.endDate))|Q(endDate__range=(self.sartDate,self.endDate))|Q(startDate__lt=self.startDate,endDate__gt=self.endDate))
#raise some save error
except Item.DoesNotExist:
super(Item,self).save(*args,**kwargs)
edit: может быть, проверка диапазона дат может пройти легче, долгое время с тех пор, как я это сделал, но она показывает общую концепцию:).