Using tags in the admin¶
By default if you have a TaggableManager on your model it will show up
in the admin, just as it will in any other form.
If you are specifying ModelAdmin.fieldsets, include the name
of the TaggableManager as a field:
fieldsets = (
(None, {'fields': ('tags')}),
)
Including tags in ModelAdmin.list_display¶
One important thing to note is that you cannot include a TaggableManager
in ModelAdmin.list_display. If you do you’ll see an exception that looks
like:
AttributeError: '_TaggableManager' object has no attribute 'name'
This is for the same reason that you cannot include a ManyToManyField:
it would result in an unreasonable number of queries being executed.
If you want to show tags in ModelAdmin.list_display, you can add a
custom display method to the ModelAdmin, using prefetch_related to
minimize queries:
class MyModelAdmin(admin.ModelAdmin):
list_display = ['tag_list']
def get_queryset(self, request):
return super(MyModelAdmin, self).get_queryset(request).prefetch_related('tags')
def tag_list(self, obj):
return u", ".join(o.name for o in obj.tags.all())
For details, see the Django documentation.