这是我的案例:
我有不同类型的用户共享一个一般 View ,但我想为他们返回不同的字段。我对特定字段使用了 values(),例如 values('f1', 'f2'),它返回了查询集。
然后,我想用一个变量来存储要查询的字段,并在values()中传递,但是失败了。我的代码片段如下所示:
list = ('f1', 'f2')
e = Entity.objects.all().values(list)
我尝试了 tuple、list、str,但都失败了。
错误信息:
object has no attribute 'split'
获取此功能的正确方法是什么?
请您参考如下方法:
您需要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
希望对您有所帮助。
