2016-10-27 12 views
0

を提出空白になっています。Djangoのフォームは、後に、私は、Djangoのテンプレートで簡単なフォームを持っている

これは私のviews.pyです:

def report_create(request, template_name='reporter/created.html'): 
    report = Report() 
    if request.POST: 
     report_form = ReportForm(request.POST or None, prefix="report_form") 

     if report_form.is_valid(): 

      report = report_form.save(commit=False) 
      report.report_name = report_form.cleaned_data['report_name'] 
      report.save() 

      return render(request, template_name, {}) 

    return redirect('reporter:empty_form') 

forms.py:

class ReportForm(forms.ModelForm): 
    class Meta: 
     model = Report 
     fields = ['report_name', 'create_date', 'additional_findings', 
        'additional_recommendations', 'report_type'] 

とmodels.py:

class Report(models.Model): 
    report_name = models.CharField(max_length=100, blank=True) 
    create_date = models.DateField('date of creation', blank=True) 
    additional_findings = models.TextField(max_length=10000, blank=True) 
    additional_recommendations = models.TextField(max_length=10000, blank=True) 

    FULL_REPORT = 'FULL REPORT' 
    NOT_FULL_REPORT = 'NOT FULL REPORT' 

    REPORT_TYPE = (
     (FULL_REPORT, 'Full report'), 
     (NOT_FULL_REPORT, 'Not full report') 
    ) 
    report_type = models.CharField(max_length=100, choices=REPORT_TYPE, default=FULL_REPORT, blank=True) 

私はジャンゴを学び、私はのように全力を尽くしますチュートリアルは、私はそれを提出したいときにこのフォームがまだ空白である理由を理解できません。

EDIT: report_create関数は変更されましたが、結果は同じですが、フォームのデータは空白です。すべてのフィールドが有効な場合

答えて

1

私は最終的に解決される問題を使用して値にアクセスすることができます。 htmlファイルの入力フィールドにname="{{ field.name }}"を追加しました。そして、すべての値をcleaned_dataで印刷します。それはうまく動作します。

EDIT: Iは、フォームのフィールド上のためにループに{{ report_form.as_p }}を変更し、入力にnameタグを追加しました。

+0

私はDjangoフォームを使ってhtml入力を構築したと思っていますが、ああ? –

+1

最初は、はい。そして、私はdjango '{{report_form.as_p}}'をこのフォームのforループのforに変更し、 'name'タグを入力に追加しました。 – allocer

1

あなたはreport_form.cleaned_data

+0

わかりません。 AttributeError: 'ReportForm'オブジェクトに 'cleaned_data'属性がありません。あなたは説明することができます、私は何をしなければならないのですか? – allocer

+0

ああ男!申し訳ありませんが、以前は言及していませんでした... 'is_valid'の後に' cleaned_data'を取得する必要があります –

+0

しかし、私は解決策ではないと思います。フォームからのデータはビューに提出されません。どのように 'cleaned_data'が助けになるのですか? – allocer

関連する問題