Django基于时间的查询集给出了意想不到的响应

时间:2015-06-23 17:40:34

标签: python django

我有一张表格如下:

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

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

1 个答案:

答案 0 :(得分:0)

这似乎按预期工作。您正在进行查询,并且找不到与查询匹配的对象(因为没有对象)。尝试这样的事情:

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:
    ...