Dynamic filter in Django

前端 未结 2 632
南旧
南旧 2021-01-03 06:40

In my app, I have a form. Depending of the form, one or many filters could be configured by the user.

In my view, I have for exemple :

query = Test.o         


        
2条回答
  •  南笙
    南笙 (楼主)
    2021-01-03 07:09

    You could do something along the lines of:

    filters = {}
    
    for key, value in request.post.items():
        if key in ['filter1', 'filter2', 'filter3']:
            filters[key] = value
    
    Test.objects.filter(**filters)
    

    Where the list is a list of keys that you are intending to filter by


    Edit

    As Thomas Junk suggested you can make it a lot cleaner with a comprehension:

    filters = {
        key: value
        for key, value in request.post.items()
        if key in ['filter1', 'filter2', 'filter3']
    }
    
    Test.objects.filter(**filters)
    

提交回复
热议问题