簡體   English   中英

在過濾器中使用 django 查詢集中的變量或清空過濾器

[英]Using variable in django queryset in a filter or empty the filter

問題 1. 我如何在這個查詢集中使用一個變量,

def function(request):
    qset1 = BigTable.objects.values(
        'deb_nr_f__dcountry__wcode_f__code',
        'deb_nr_f__dcountry__wcode_f__code_name',
        ).filter(id_nr_f__ie_code__unomer_f__nomer=iteration_result,
        )

我的意思是這樣的

def function(request):

    x1 = 'id_nr_f__ie_code__unomer_f__nomer'

    qset1 = BigTable.objects.values(
        'deb_nr_f__dcountry__wcode_f__code',
        'deb_nr_f__dcountry__wcode_f__code_name',
        ).filter(x1 = iteration_result,
        )

問題2.如何用varianbe清空過濾器,讓查詢中的過濾器不過濾記錄。 我的意思是這樣的

def function(request):

    x1 = 'id_nr_f__ie_code__unomer_f__nomer'
    x2 = True

    qset1 = BigTable.objects.values(
        'deb_nr_f__dcountry__wcode_f__code',
        'deb_nr_f__dcountry__wcode_f__code_name',
        ).filter(x1 = x2,
        )

謝謝你。

您可以定義一個dict ,然后將其作為kwargs傳遞給filter

attr1 = 'some attr'
attr2 = 'some attr'
filter_dict = {
    attr1:filter1,
    attr2:filter2,
     ...
}
queryset.filter(**filter_dict)

您可以使用Q對象,在其中傳遞要過濾的 2 元組:

from django.db.models import Q

def function(request):

    x1 = 'id_nr_f__ie_code__unomer_f__nomer'

    qset1 = BigTable.objects.values(
        'deb_nr_f__dcountry__wcode_f__code',
        'deb_nr_f__dcountry__wcode_f__code_name',
    ).filter(
        Q((x1, iteration_result))
    )

或者有一個值:

from django.db.models import Q

def function(request):

    x1 = 'id_nr_f__ie_code__unomer_f__nomer'
    x2 = True

    qset1 = BigTable.objects.values(
        'deb_nr_f__dcountry__wcode_f__code',
        'deb_nr_f__dcountry__wcode_f__code_name',
    ).filter(
        Q((x1, x2))
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM