Commit b2a51255 by Florian Apolloner

Merge pull request #135 from benbacardi/develop

Added names() method to _TaggableManager
parents 57055742 5075638c
......@@ -54,6 +54,22 @@ playing around with the API.
model with its own tagging through table, only other instances of the
same model will be returned.
.. method:: names()
Convenience method, returning a ``ValuesListQuerySet`` (basically
just an iterable) containing the name of each tag as a string::
>>> apple.tags.names()
[u'green and juicy', u'red']
.. method:: slugs()
Convenience method, returning a ``ValuesListQuerySet`` (basically
just an iterable) containing the slug of each tag as a string::
>>> apple.slugs.names()
[u'green-and-juicy', u'red']
Filtering
~~~~~~~~~
......
......@@ -172,6 +172,14 @@ class _TaggableManager(models.Manager):
self.through.objects.get_or_create(tag=tag, **self._lookup_kwargs())
@require_instance_manager
def names(self):
return self.get_query_set().values_list('name', flat=True)
@require_instance_manager
def slugs(self):
return self.get_query_set().values_list('slug', flat=True)
@require_instance_manager
def set(self, *tags):
self.clear()
self.add(*tags)
......@@ -247,4 +255,4 @@ def _get_subclasses(model):
# is not supported by Django 1.4
if six.PY3:
from django.utils.functional import total_ordering
TaggableManager = total_ordering(TaggableManager)
\ No newline at end of file
TaggableManager = total_ordering(TaggableManager)
......@@ -313,6 +313,18 @@ class TaggableManagerTestCase(BaseTaggingTestCase):
self.assertTrue(hasattr(field, 'related'))
self.assertEqual(self.food_model, field.related.model)
def test_names_method(self):
apple = self.food_model.objects.create(name="apple")
apple.tags.add('green')
apple.tags.add('red')
self.assertEqual(list(apple.tags.names()), ['green', 'red'])
def test_slugs_method(self):
apple = self.food_model.objects.create(name="apple")
apple.tags.add('green and juicy')
apple.tags.add('red')
self.assertEqual(list(apple.tags.slugs()), ['green-and-juicy', 'red'])
class TaggableManagerDirectTestCase(TaggableManagerTestCase):
food_model = DirectFood
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment