django - django-taggit形式

ava*_*tar 8 django django-models django-forms django-views django-taggit

我想用django-taggit(点击这里).文档(单击此处)讨论了使用ModelForm生成表单,但我已经使用了我想要使用的表单.

假设我有这样的事情:

forms.py

class MyForm(forms.Form):
    ......
    tags = forms.CharField(max_length=200, widget=forms.Textarea)
Run Code Online (Sandbox Code Playgroud)

如何保存来自tags现场的标签?我的是什么views.py?一个真实的例子将是真正的赞赏.

DTi*_*ing 12

我不太熟悉django taggit应用程序,但看起来如果你想使用应用程序使用的相同字段和小部件设置,你可以从taggit.forms(https://github.com/alex/django-taggit/blob/master/taggit/forms.py)导入它们:

你的models.py:

from django.db import models

from taggit.managers import TaggableManager

class Food(models.Model):
    name = models.CharField(max_length=20)

    tags = TaggableManager()
Run Code Online (Sandbox Code Playgroud)

你的forms.py

from taggit.forms import *

class MyForm(forms.Form):
    name = forms.CharField()
    m_tags = TagField()
Run Code Online (Sandbox Code Playgroud)

TagField将使用taggit应用程序中的utils.py中的parse_tags方法返回已处理的输入.返回看起来是一个清理列表(设置(单词))

你的views.py

if form.is_valid():
    name = form.cleaned_data['name']
    m_tags = form.cleaned_data['m_tags']
    object = Food(name=name)
    object.save()
    for m_tag in m_tags:
        object.tags.add(m_tag)
    return HttpResponseRedirect('/thanks/')
Run Code Online (Sandbox Code Playgroud)

  • 这当然不会删除标签,如果您已将其标记为删除. (2认同)

seb*_*seb 7

我不能评论使用/"绿色滴答"的答案.但我会改变Block

for m_tag in m_tags:
    object.tags.add(m_tag)
Run Code Online (Sandbox Code Playgroud)

至

object.tags.add(*m_tags)
Run Code Online (Sandbox Code Playgroud)