mirror of
https://github.com/django/django.git
synced 2025-07-05 18:29:11 +00:00
queryset-refactor: Renamed the Queryset method valueslist() to values_list.
Suggested by Michael Trier. It's more consistent with order_by, select_related, etc. This is backwards incompatible for people previously using this method on the branch (the method doesn't exist on trunk, so it's very minor). git-svn-id: http://code.djangoproject.com/svn/django/branches/queryset-refactor@7451 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
27b0a4c4e7
commit
9d6f0f9e10
@ -114,8 +114,8 @@ class Manager(object):
|
|||||||
def values(self, *args, **kwargs):
|
def values(self, *args, **kwargs):
|
||||||
return self.get_query_set().values(*args, **kwargs)
|
return self.get_query_set().values(*args, **kwargs)
|
||||||
|
|
||||||
def valueslist(self, *args, **kwargs):
|
def values_list(self, *args, **kwargs):
|
||||||
return self.get_query_set().valueslist(*args, **kwargs)
|
return self.get_query_set().values_list(*args, **kwargs)
|
||||||
|
|
||||||
def update(self, *args, **kwargs):
|
def update(self, *args, **kwargs):
|
||||||
return self.get_query_set().update(*args, **kwargs)
|
return self.get_query_set().update(*args, **kwargs)
|
||||||
|
@ -307,13 +307,13 @@ class QuerySet(object):
|
|||||||
def values(self, *fields):
|
def values(self, *fields):
|
||||||
return self._clone(klass=ValuesQuerySet, setup=True, _fields=fields)
|
return self._clone(klass=ValuesQuerySet, setup=True, _fields=fields)
|
||||||
|
|
||||||
def valueslist(self, *fields, **kwargs):
|
def values_list(self, *fields, **kwargs):
|
||||||
flat = kwargs.pop('flat', False)
|
flat = kwargs.pop('flat', False)
|
||||||
if kwargs:
|
if kwargs:
|
||||||
raise TypeError('Unexpected keyword arguments to valueslist: %s'
|
raise TypeError('Unexpected keyword arguments to values_list: %s'
|
||||||
% (kwargs.keys(),))
|
% (kwargs.keys(),))
|
||||||
if flat and len(fields) > 1:
|
if flat and len(fields) > 1:
|
||||||
raise TypeError("'flat' is not valid when valueslist is called with more than one field.")
|
raise TypeError("'flat' is not valid when values_list is called with more than one field.")
|
||||||
return self._clone(klass=ValuesListQuerySet, setup=True, flat=flat,
|
return self._clone(klass=ValuesListQuerySet, setup=True, flat=flat,
|
||||||
_fields=fields)
|
_fields=fields)
|
||||||
|
|
||||||
|
@ -648,32 +648,32 @@ followed (optionally) by any output-affecting methods (such as ``values()``),
|
|||||||
but it doesn't really matter. This is your chance to really flaunt your
|
but it doesn't really matter. This is your chance to really flaunt your
|
||||||
individualism.
|
individualism.
|
||||||
|
|
||||||
``valueslist(*fields)``
|
``values_list(*fields)``
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
**New in Django development version**
|
**New in Django development version**
|
||||||
|
|
||||||
This is similar to ``values()`` except that instead of returning a list of
|
This is similar to ``values()`` except that instead of returning a list of
|
||||||
dictionaries, it returns a list of tuples. Each tuple contains the value from
|
dictionaries, it returns a list of tuples. Each tuple contains the value from
|
||||||
the respective field passed into the ``valueslist()`` call -- so the first
|
the respective field passed into the ``values_list()`` call -- so the first
|
||||||
item is the first field, etc. For example::
|
item is the first field, etc. For example::
|
||||||
|
|
||||||
>>> Entry.objects.valueslist('id', 'headling')
|
>>> Entry.objects.values_list('id', 'headling')
|
||||||
[(1, u'First entry'), ...]
|
[(1, u'First entry'), ...]
|
||||||
|
|
||||||
If you only pass in a single field, you can also pass in the ``flat``
|
If you only pass in a single field, you can also pass in the ``flat``
|
||||||
parameter. If ``True``, this will mean the returned results are single values,
|
parameter. If ``True``, this will mean the returned results are single values,
|
||||||
rather than one-tuples. An example should make the difference clearer::
|
rather than one-tuples. An example should make the difference clearer::
|
||||||
|
|
||||||
>>> Entry.objects.valueslist('id').order_by('id')
|
>>> Entry.objects.values_list('id').order_by('id')
|
||||||
[(1,), (2,), (3,), ...]
|
[(1,), (2,), (3,), ...]
|
||||||
|
|
||||||
>>> Entry.objects.valueslist('id', flat=True).order_by('id')
|
>>> Entry.objects.values_list('id', flat=True).order_by('id')
|
||||||
[1, 2, 3, ...]
|
[1, 2, 3, ...]
|
||||||
|
|
||||||
It is an error to pass in ``flat`` when there is more than one field.
|
It is an error to pass in ``flat`` when there is more than one field.
|
||||||
|
|
||||||
If you don't pass any values to ``valueslist()``, it will return all the
|
If you don't pass any values to ``values_list()``, it will return all the
|
||||||
fields in the model, in the order they were declared.
|
fields in the model, in the order they were declared.
|
||||||
|
|
||||||
``dates(field, kind, order='ASC')``
|
``dates(field, kind, order='ASC')``
|
||||||
|
@ -168,29 +168,29 @@ FieldError: Cannot resolve keyword 'id_plus_two' into field. Choices are: headli
|
|||||||
>>> list(Article.objects.filter(id=5).values()) == [{'id': 5, 'headline': 'Article 5', 'pub_date': datetime(2005, 8, 1, 9, 0)}]
|
>>> list(Article.objects.filter(id=5).values()) == [{'id': 5, 'headline': 'Article 5', 'pub_date': datetime(2005, 8, 1, 9, 0)}]
|
||||||
True
|
True
|
||||||
|
|
||||||
# valueslist() is similar to values(), except that the results are returned as
|
# values_list() is similar to values(), except that the results are returned as
|
||||||
# a list of tuples, rather than a list of dictionaries. Within each tuple, the
|
# a list of tuples, rather than a list of dictionaries. Within each tuple, the
|
||||||
# order of the elemnts is the same as the order of fields in the valueslist()
|
# order of the elemnts is the same as the order of fields in the values_list()
|
||||||
# call.
|
# call.
|
||||||
>>> Article.objects.valueslist('headline')
|
>>> Article.objects.values_list('headline')
|
||||||
[(u'Article 5',), (u'Article 6',), (u'Article 4',), (u'Article 2',), (u'Article 3',), (u'Article 7',), (u'Article 1',)]
|
[(u'Article 5',), (u'Article 6',), (u'Article 4',), (u'Article 2',), (u'Article 3',), (u'Article 7',), (u'Article 1',)]
|
||||||
|
|
||||||
>>> Article.objects.valueslist('id').order_by('id')
|
>>> Article.objects.values_list('id').order_by('id')
|
||||||
[(1,), (2,), (3,), (4,), (5,), (6,), (7,)]
|
[(1,), (2,), (3,), (4,), (5,), (6,), (7,)]
|
||||||
>>> Article.objects.valueslist('id', flat=True).order_by('id')
|
>>> Article.objects.values_list('id', flat=True).order_by('id')
|
||||||
[1, 2, 3, 4, 5, 6, 7]
|
[1, 2, 3, 4, 5, 6, 7]
|
||||||
|
|
||||||
>>> Article.objects.extra(select={'id_plus_one': 'id+1'}).order_by('id').valueslist('id')
|
>>> Article.objects.extra(select={'id_plus_one': 'id+1'}).order_by('id').values_list('id')
|
||||||
[(1,), (2,), (3,), (4,), (5,), (6,), (7,)]
|
[(1,), (2,), (3,), (4,), (5,), (6,), (7,)]
|
||||||
>>> Article.objects.extra(select={'id_plus_one': 'id+1'}).order_by('id').valueslist('id_plus_one', 'id')
|
>>> Article.objects.extra(select={'id_plus_one': 'id+1'}).order_by('id').values_list('id_plus_one', 'id')
|
||||||
[(2, 1), (3, 2), (4, 3), (5, 4), (6, 5), (7, 6), (8, 7)]
|
[(2, 1), (3, 2), (4, 3), (5, 4), (6, 5), (7, 6), (8, 7)]
|
||||||
>>> Article.objects.extra(select={'id_plus_one': 'id+1'}).order_by('id').valueslist('id', 'id_plus_one')
|
>>> Article.objects.extra(select={'id_plus_one': 'id+1'}).order_by('id').values_list('id', 'id_plus_one')
|
||||||
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8)]
|
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8)]
|
||||||
|
|
||||||
>>> Article.objects.valueslist('id', 'headline', flat=True)
|
>>> Article.objects.values_list('id', 'headline', flat=True)
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
...
|
...
|
||||||
TypeError: 'flat' is not valid when valueslist is called with more than one field.
|
TypeError: 'flat' is not valid when values_list is called with more than one field.
|
||||||
|
|
||||||
# Every DateField and DateTimeField creates get_next_by_FOO() and
|
# Every DateField and DateTimeField creates get_next_by_FOO() and
|
||||||
# get_previous_by_FOO() methods.
|
# get_previous_by_FOO() methods.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user