Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django queryset api-使用带有字段列表的值方法_Python_Django_Django Queryset - Fatal编程技术网

Python django queryset api-使用带有字段列表的值方法

Python django queryset api-使用带有字段列表的值方法,python,django,django-queryset,Python,Django,Django Queryset,我想对Django模型进行查询,但我不知道要提前检索的字段。如果我碰巧知道他们和他们的电话号码,我会的 MyModel.objects.values('field1', 'field2') 实际上,我注意到values方法采用可选的位置参数,*字段,如API中所指定的 因此,我考虑创建一个函数,它接受*字段参数,然后使用这些参数进行查询。包装器如下所示: def get_values(self, *fields): return MyModel.objects.values(fields

我想对Django模型进行查询,但我不知道要提前检索的字段。如果我碰巧知道他们和他们的电话号码,我会的

MyModel.objects.values('field1', 'field2')
实际上,我注意到
values
方法采用可选的位置参数,*字段,如API中所指定的

因此,我考虑创建一个函数,它接受
*字段
参数,然后使用这些参数进行查询。包装器如下所示:

def get_values(self, *fields):
   return MyModel.objects.values(fields)

但是,我得到了一个
AttributeError:“tuple”对象没有属性“split”
,因为QuerySet API不喜欢我的tuple。我如何计算呢?

您需要解压缩这些值:)

否则就像你写的那样

def get_values(self, *fields):
    return MyModel.objects.values(('field1', 'field2'))  # note the extra ()

。。。因此,
AttributeError:“tuple”对象没有属性“split”
,因为tuple没有
split
方法

您需要解压缩这些值:)

否则就像你写的那样

def get_values(self, *fields):
    return MyModel.objects.values(('field1', 'field2'))  # note the extra ()

。。。因此,
AttributeError:“tuple”对象没有属性“split”
,因为tuple没有
split
方法

您可以使用python解包功能:
*
运算符可用于发送参数列表作为位置参数:

>>> fields = ['field1', 'fields2']
>>> MyModel.objects.values(*fields)
<MyModelQueryset [{'field1': 'foo1', 'field2': 'bar2'}, {'field1': 'foo1', 'field2': 'bar2'}, {'field1': 'foo1', 'field2': 'bar2'}]>
>>字段=['field1','fields2']
>>>MyModel.objects.values(*字段)

您可以使用python解包功能:
*
运算符可用于发送参数列表作为位置参数:

>>> fields = ['field1', 'fields2']
>>> MyModel.objects.values(*fields)
<MyModelQueryset [{'field1': 'foo1', 'field2': 'bar2'}, {'field1': 'foo1', 'field2': 'bar2'}, {'field1': 'foo1', 'field2': 'bar2'}]>
>>字段=['field1','fields2']
>>>MyModel.objects.values(*字段)