Search code examples
djangodjango-taggit

Django-Taggit in Edit Form


This is a Model Class

class ModelName(models.Model):
  (...)
  pasta = TaggableManager(verbose_name=u'Pasta')

and a form template (normal :P )

{{form.as_p}}

I'd like to leave everything very clean and usefull. But result is a list of TaggedItem Object :( :

[<TaggedItem: id: 2 tagged with general >, <TaggedItem: id: 3  tagged with outer >]

Instead of something like

general, outer

How do it fashionably in Django?


Solution

  • Give a look at the code in: https://github.com/alex/django-taggit/blob/master/taggit/forms.py. You will find the widget used to render the tags. You can use it to render them correctly.

    Example:

    models.py

    from django.db import models
    from taggit.managers import TaggableManager
    
    
    class Example(models.Model):
        name = models.CharField(max_length=20)    
        tags = TaggableManager()
    

    forms.py

    .models import Example
    from django import forms
    from taggit.forms import TagWidget
    
    
    class ExampleForm(forms.ModelForm):
    
        class Meta:
            model = Example
            fields = ('name', 'tags',)
            widgets = {
                'tags': TagWidget(),
            }
    

    I'd recommend you to check this answer too. django - django-taggit form