2016-10-27 1 views
0

У меня есть простая форма в шаблоне Джанго:Джанго формы заготовки после представить

<div class="container"> 
    <form action="{% url 'reporter:new_report' %}" method="post" novalidate>{% csrf_token %} 
     {{ report_form.as_p }} 
     <button type="submit" value="submit" class="btn btn-primary">Generuj raport</button> 
    </form> 
</div> 

, но когда я хочу представить его это отправить пустые поля в моей форму, и я не знаю, почему.

Это мой 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) 

Я учусь Django, я делаю все, как в но я не могу понять, почему эта форма остается пустой, когда я хочу ее отправить.

EDIT: Я изменил функцию report_create, но результат все же - данные из формы пустые.

ответ

1

я, наконец, решить проблему. Я добавил name="{{ field.name }}" в поля ввода в файле html. Затем распечатайте все значения с помощью cleaned_data. Он работает нормально.

РЕДАКТИРОВАТЬ: Я изменил {{ report_form.as_p }} к петле в течение более полей в форме и добавляют name тег к входам.

+0

Я думал, что вы создали html-вход, используя форму Django, но не ах? –

+1

В начале, да. Затем я изменил django '{{report_form.as_p}}' для того, чтобы перебрать поля в этой форме и добавил тег 'name' к входам. – allocer

1

Если все ваше поле действует, то вы можете получить доступ к данным с помощью report_form.cleaned_data

+0

Я не понимаю. Я получил ошибку: AttributeError: объект ReportForm не имеет атрибута 'cleaned_data'. Можете ли вы объяснить, что мне делать? – allocer

+0

О, мужчина! извините, я не упоминал ранее ... вы должны получить 'cleaned_data' после' is_valid' только –

+0

Но я думаю, что это не решение. Данные из формы не отображаются в представлении. Как «cleaned_data» может там помочь? – allocer

Смежные вопросы