Django-Taggit in Edit Form

2020-02-29 06:53发布

问题:

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?

回答1:

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



回答2:

I would use django-taggit-autosuggest as it offers better UI to the user.