Url参数到模型字段

时间:2018-02-23 14:22:19

标签: python django django-models

我有一个视图,它接受一个参数并根据查询集返回一个csv文件:

def rfidi_list(request, id=None):
    if id == None:
        raise Http404

    rfid_list = Rfid.objects.filter(----).values_list('rfid_st', flat=True)
    import csv

    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="rfidi_list.csv"'
    writer = csv.writer(response, delimiter=';')
    writer.writerow(rfid_list)

    return response


我有一个名为 Rfid 的模型,其中包含名为: vrata1 vrata2 vrata3

的布尔字段

我想根据url中的id过滤queryset。如果id为1,我会返回vrata1 = True的对象,如果是2,我想用vrata2 = True的对象获得qs。

谢谢

2 个答案:

答案 0 :(得分:0)

您可以这样创建查找过滤器:

rfid_list = Rfid.objects.filter(
    **{
        '{}{}'.format('vrata', id): True
      }
).values_list('rfid_st',flat=True)

concat' vrata'和ID,然后将语法转换为django ORM。

答案 1 :(得分:0)

我明白了。如果有人想知道,我将id作为字符串传递并添加** kwargs进行过滤。所以它看起来像这样

string = 'vrata' + id

rfid_list = Rfid.objects.filter(**{ string : True}).values_list('rfid_st',flat=True)