Python Django模型对象筛选是否与查找创建对象的初始日期的日期范围有关?

Python Django模型对象筛选是否与查找创建对象的初始日期的日期范围有关?,python,django,datetime,django-models,Python,Django,Datetime,Django Models,我有一个简单的事件模型,它有开始日期和结束日期,关键部分是日期范围必须是唯一的 出于这个原因,我编写了类查询(Q)过滤器,用于检查日期范围是否唯一。 不管怎么说,我的问题就在眼前;当用户进入带有初始日期的事件添加页面时,我需要创建一个事件对象(用户可以稍后更改它的日期范围唯一性) 如何确定(筛选)哪些天不包含在任何事件对象中? 或者这个月是否有可用的日期?使用django过滤器或一些智能方法 在我看来:有一个函数用于创建具有初始日期的事件对象并重定向到url,用于更新/编辑事件详细信息 #vie

我有一个简单的事件模型,它有开始日期和结束日期,关键部分是日期范围必须是唯一的

出于这个原因,我编写了类查询(Q)过滤器,用于检查日期范围是否唯一。 不管怎么说,我的问题就在眼前;当用户进入带有初始日期的事件添加页面时,我需要创建一个事件对象(用户可以稍后更改它的日期范围唯一性)

如何确定(筛选)哪些天不包含在任何事件对象中? 或者这个月是否有可用的日期?使用django过滤器或一些智能方法

在我看来:有一个函数用于创建具有初始日期的事件对象并重定向到url,用于更新/编辑事件详细信息

#view:
try:
    event = Event.objects.create(user=request.user,
                                 start_date=datetime.date.today(), 
                                 end_date=datetime.date.today())
except IntegrityError, e:
    return HttpResponse(e)

ps:如果有更聪明的方法用不同的设计方法来实现这一点,我很乐意听到。

不是你问题的核心,但请注意,你没有在这里介绍
多对象返回的案例:

    try:
        Event.objects.get(
            Q(user=self.user, status=1),
            Q(start_date__range=(self.start_date, self.end_date))
            |Q(end_date__range(self.start_date, self.end_date))
            |Q(start_date__lte=self.start_date, end_date__gte=self.end_date)
        )
        raise IntegrityError("Error message")
    except Event.DoesNotExist:
        super(Event,self).save(*args,**kwargs)
我想这样会更好

    if Event.objects.filter(
        Q(user=self.user, status=1),
        Q(start_date__range=(self.start_date, self.end_date))
        | Q(end_date__range(self.start_date, self.end_date))
        | Q(start_date__lte=self.start_date, end_date__gte=self.end_date)
    ):
        raise IntegrityError("Error message")
    else:
        super(Event,self).save(*args,**kwargs)

那么,您想找到最接近今天的开始/结束,以便在您的保存方法中通过查询吗?是的,这就是我想要的。是的,我注意到,今天早上,在这里检查时,感谢您,解决方案正在等待我。
    if Event.objects.filter(
        Q(user=self.user, status=1),
        Q(start_date__range=(self.start_date, self.end_date))
        | Q(end_date__range(self.start_date, self.end_date))
        | Q(start_date__lte=self.start_date, end_date__gte=self.end_date)
    ):
        raise IntegrityError("Error message")
    else:
        super(Event,self).save(*args,**kwargs)