Django基于时间的查询集提供意外响应

2024-06-14 02:43:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张桌子如下:

class Availability(models.Model):
    arena = models.ForeignKey(Arena, null=True)
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()
    token = UUIDField(auto=True, unique=True, null=True)
    validity = models.DateTimeField(null=True)

现在我在django视图中使用它,如下所示:

def post(self, request):
    data = request.DATA
    arena = data['arena']
    start_time = datetime.datetime.strptime(data['start_time'], '%d/%m/%Y %H:%M')
    end_time = datetime.datetime.strptime(data['end_time'], '%d/%m/%Y %H:%M')
    try:
        slots = Availability.objects.filter(Q(arena__id=arena), Q(start_date__gte=start_time), Q(end_date__lte=end_time)) #Checking if there's any availability between a certain period of time at a certain arena            
        serialized = ScheduleSerializer(slots, many=True)
        return Response({
            'success': False,
            'response': serialized.data #empty array
        })
    except Availability.DoesNotExist:
        ... #Some Code

我的可用性表中没有对象,但是上面的查询执行并返回一个空数组作为响应。我的问题对吗?如果没有,我该如何解决这个问题


Tags: truedatadatetimedatetimemodelsrequeststart
1条回答
网友
1楼 · 发布于 2024-06-14 02:43:01

这似乎是预期的工作。您正在执行查询,但找不到与查询匹配的对象(因为没有对象)。尝试以下操作:

slots = Availability.objects.filter(Q(arena__id=arena), Q(start_date__gte=start_time), Q(end_date__lte=end_time)) #Checking if there's any availability between a certain period of time at a certain arena

if slots:            
    serialized = ScheduleSerializer(slots, many=True)
    return Response({
        'success': False,
        'response': serialized.data #empty array
    })
else:
    ...

相关问题 更多 >