我想使用django-taggit (click here )。文档( click here)谈到了使用ModelForm生成表单,但是我已经有了我想要使用的表单。
假设我有这样的东西:
forms.py
class MyForm(forms.Form):
......
tags = forms.CharField(max_length=200, widget=forms.Textarea)如何保存来自tags字段的标记?我的views.py里有什么?一个真正的例子将是真正的感谢。
发布于 2011-03-19 18:23:23
我不太熟悉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()你的forms.py
from taggit.forms import *
class MyForm(forms.Form):
name = forms.CharField()
m_tags = TagField()TagField将使用taggit应用程序中的utils.py中的parse_tags方法返回处理后的输入。返回看起来是一个清理过的列表(set(Word))
你的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/')发布于 2011-12-23 09:34:37
我不能评论二手/“绿色勾选”的答案。但我会换个区块
for m_tag in m_tags:
object.tags.add(m_tag)至
object.tags.add(*m_tags)发布于 2012-04-07 23:44:02
请参阅此处的说明:https://github.com/alex/django-taggit/blob/master/docs/forms.txt
如果在保存表单时使用commit=False选项,则需要在保存对象后在表单上调用save_m2m(),就像对具有普通多对多字段的表单一样::
if request.method == "POST":
form = MyFormClass(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.user = request.user
obj.save()
# Without this next line the tags won't be saved.
form.save_m2m()https://stackoverflow.com/questions/5359714
复制相似问题