我试图在我的代码中尽可能少地重复自己,购买遇到了问题。
我的代码看起来像这样
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
使用关键字解包,可以像这样完成:
.filter(state=i, **{param: 'identifier'})
或者如果您愿意:
.filter(**{param: 'identifier', 'state': i})