Dynamic filter in Django

前端 未结 2 621
南旧
南旧 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:01

    This code solved my problem:

    if request.method == 'GET':
            filters = {}
            for key, value in request.GET.items():
                if value != '':
                    filters[key] = value
            filter_list=Pet.objects.filter(**filters)
    
    0 讨论(0)
  • 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)
    
    0 讨论(0)
提交回复
热议问题