簡體   English   中英

TreeNodeChoiceField 在表單中不可迭代 - Django

[英]TreeNodeChoiceField not iterable in a form - Django

我想知道是否有人熟悉 Django 中 mptt 的 TreeNodeChoiceField。 我正在嘗試在表單中使用此功能在博客上發布文章。 但是當我嘗試創建一個新帖子時,它說關聯的 object 是不可迭代的。 使用 get 方法或僅使用 forms.ModelMultipleChoiceField 時不會發生這種情況。 因此,我想知道是否有人知道我如何在沒有這個問題的情況下使用 TreeNodeChoiceField。 感謝您的任何意見!

這是 forms.py

class BlogForm(forms.ModelForm):
    sdg = forms.ModelMultipleChoiceField(
        queryset=SDG.objects.all(),
        widget=forms.CheckboxSelectMultiple
        )

    value_chain = TreeNodeChoiceField(queryset=Value_chain.objects.all())

    industry = forms.ModelMultipleChoiceField(
        queryset=Industry.objects.all()
        )

    class Meta:
        model = Blog
        fields = ["title", "sdg", "value_chain", "industry", "contenu"]

這是我的views.py

def blog_create(request):
    if request.method == "POST":
        blog_form = BlogForm(request.POST)
        docu_form = DocumentFormBlog(request.POST, request.FILES)
        if blog_form.is_valid() and docu_form.is_valid(): 
            blog_form.instance.user = request.user
            blog = blog_form.save()
            docu_form.instance.blog_related = blog
            docu_form.save()
            messages.success(request, 'Your blog was successfully created!')
            return redirect('knowledge:search_blog')

        else:
            messages.error(request, 'Please correct the error below.')
    else:
        blog_form = BlogForm(request.POST)
        docu_form = DocumentFormBlog(request.POST, request.FILES)
    return render(request, "dist/inside/knowledge/blog/create_blog.html", context={"blog_form": blog_form, "docu_form": docu_form})

最后,為了讓它工作,我必須創建一個新表單,僅用於調用適當 Model 的 TreeNodeChoiceField:

"""

class SeedFormVC(forms.ModelForm):
    value_chain = TreeNodeChoiceField(queryset=Value_chain.objects.all().exclude(id=1))

    class Meta:
        model = Value_Chain_Seed
        fields = ['value_chain']

"""

這不是最好的答案,所以如果有人發現更好的東西,請告訴我!

暫無
暫無

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

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