以下是我的案例:
我有不同类型的用户共享一个通用视图,但我希望为它们返回不同的字段。我将values()
用于特定字段,例如values('f1', 'f2')
,并返回了查询集。
然后,我想使用变量存储要查询的字段,并在values()
中传递,但失败了。我的片段看起来像这样:
list = ('f1', 'f2')
e = Entity.objects.all().values(list)
我尝试了tuple,list,str,但都失败了。
错误消息:
对象没有属性' split'
获得此功能的正确方法是什么?
答案 0 :(得分:2)
您需要unpack the list:
fields = ('f1', 'f2')
e = Entity.objects.all().values(*fields)
另外,不要将变量命名为list
- 它隐藏内置的可变类型:
>>> a = list()
>>> a
[]
>>> list = ('f1', 'f2')
>>> a = list()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object is not callable
希望有所帮助。