簡體   English   中英

django - django-taggit 表單

[英]django - django-taggit form

我想使用django-taggit點擊這里)。 文檔( 單擊此處)討論了使用ModelForm生成表單,但我已經有了想要使用的表單。

假設我有這樣的事情:

表格.py

class MyForm(forms.Form):
    ......
    tags = forms.CharField(max_length=200, widget=forms.Textarea)

如何保存來自tags字段的tags 我的views.py什么? 一個真實的例子將不勝感激。

我對 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(words))

你的意見.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/')

我無法評論使用過的/“綠色勾選”答案。 但我會改變塊

for m_tag in m_tags:
    object.tags.add(m_tag)

object.tags.add(*m_tags)

請參閱此處的說明: 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM