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().get_queryset(request).prefetch_related('tags')

    def tag_list(self, obj):
        return u", ".join(o.name for o in obj.tags.all())