0

これは私のフォームクラスです: from django import forms

from .models import Category


class AddResource(forms.Form):

    CATEGORY_CHOICES = [cat.title for cat in Category.objects.all()]

    ResourceTitle = forms.CharField()
    Description = forms.Textarea()
    Link = forms.URLField()
    Categories = forms.MultipleChoiceField(choices=CATEGORY_CHOICES)

これは、フォーム URL に対する私のビューです。

from django.shortcuts import render
from django.views.generic import View, TemplateView, FormView

from .models import *
from .forms import AddResource


class AddResourceView(FormView):

    template_name = 'addRes.html'
    form_class = AddResource
    success_url = '/'

    def get_form(self, form_class):
        return form_class()

    def form_valid(self, form):
        print form
        return super(AddResourceView, self).form_valid(form)

私が抱えている問題は、これをテンプレート内で呼び出すことです。django-templates 内で割り当てたフォームを呼び出すにはどうすればよいですか?

4

2 に答える 2

1

は、実際のフォーム オブジェクトを保持するFormViewと呼ばれるコンテキスト変数を提供するformため、以下を使用できます。

{{ form.as_table }}

または提供される他のレンダリングオプションのいずれかform。参照: https://docs.djangoproject.com/en/dev/topics/forms/#displaying-a-form-using-a-template

于 2013-08-13T12:50:53.733 に答える
0

私は答えを見つけました。Djangoフォームに選択肢を含める方法です。したがってCATEGORY_CHOICES、タプルのリストでなければなりませんが、この場合はそうではありませんでした。

したがって、この単純な変更により機能しました。

CATEGORY_CHOICES = [('', cat.title)
                    for cat in Category.objects.all()]
于 2013-08-13T13:02:44.510 に答える