python - Django 使用字符串来过滤模型以避免重复

标签 python mysql django database model

我试图在我的代码中尽可能少地重复自己,但购买遇到了问题。

我的代码如下所示

from .models import source

def myfunction():
    if  category1 == True:
        types=5
        b=[None]*types
        for i in range(0, types):
            b[i]=source.objects.all().filter(rowdata1='identifier', state=i)

    elif category2 == True:
        types=3
        b=[None]*types
        for i in range(0, types):
            b[i]=source.objects.all().filter(rowdata2='identifier', state=i)
    .
    .
    .
    return result

但是我想做这样的事情:

def myfunction():
    if  category1 == True:
        types=5
        param='rowdata1'

    elif category2 == True:
        types=3
        param='rowdata2'

    b=[None]*types
        for i in range(0, types):
            b[i]=source.objects.all().filter(param='identifier', state=i)
    .
    .
    .
    return result

有没有办法使用字符串或其他结构作为过滤器值来访问 Django 中的模型?当我尝试示例 2 时,出现字段错误,第一个有效。

工作建议:

def myfunction():
    if  category1 == True:
        types=5
        param='rowdata1'

    elif category2 == True:
        types=3
        param='rowdata2'

    b=[None]*types
    for i in range(0, types):
        b[i]=source.objects.all().filter(**{param:'identifier'}, state=i)
    .
    .
    .
    return result

最佳答案

使用keyword unpacking ,可以这样做:

.filter(state=i, **{param: 'identifier'})

或者如果您愿意:

.filter(**{param: 'identifier', 'state': i})

关于python - Django 使用字符串来过滤模型以避免重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50192623/

相关文章:

Python 初学者- 一个程序只使用多个函数有什么问题吗?

javascript - 如何在 Bokeh/Python/Pywidgets 中使一个 slider /小部件更新多个绘图?

mysql - Group_concat() 削减一些行

MySQL 分组依据

Python GeraldoReports - 用逗号格式化求和值

Django ORM : checking if a field is blank or filled

python - 使用 Dowser 在 Python 中跟踪内存泄漏

python - 将字典的字典打印为表格

php - 更改 HTML <area> 元素的背景颜色

Python/Django png,gif 转 jpg