2017-10-19 45 views
1

我正在嘗試構建一個應用程序創建患者數據,將其保存並顯示出來。窗體不保存對象重定向到新的窗體視圖

問題:當我填充字段並單擊保存時,它不會保存對象並將數據呈現給文檔對象模型。它重新加載頁面,字段數據仍在字段中。

我不知道我做錯了什麼。視圖,表單和模型代碼似乎是準確的。我歡迎任何有用的援助。

下面是代碼:

models.py

from django.db import models 
from django.contrib.auth.models import User 
from Identity import settings 
import datetime 


class Identity_unique(models.Model): 

    NIS = models.CharField(max_length = 200, primary_key = True) 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    Timestamp = models.DateTimeField(auto_now = True) 
    first_Name = models.CharField(max_length = 80, null = True) 
    last_Name = models.CharField(max_length = 80, null = True) 
    location = models.CharField(max_length = 100, blank = True) 
    date_of_birth = models.DateField(auto_now = False, auto_now_add = False, blank = True, null = True) 
    contact = models.CharField(max_length = 15, null = True) 

views.py

from django.shortcuts import render, redirect 
from django.views.generic import TemplateView, UpdateView 
from nesting.forms import Identity_Form, Symptom_Form 
from nesting.models import Identity_unique, Symptom_relation 


class Identity_view(TemplateView): 

    template_name = 'nesting/nesting.html' 

    def get(self, request): 
     form = Identity_Form() 
     Identities = Identity_unique.objects.filter(user = request.user) 
     var = {'form': form, 'Identities': Identities} 
     return render(request, self.template_name, var) 

    def post(self, request): 
     form = Identity_Form(request.POST or None) 
     content = None 
     if form.is_valid(): 
      NIS = form.save(commit = False) 
      NIS.user = request.user 
      NIS.save() 

      content = form.cleaned_data['NIS'] 
      form = Identity_Form() 
      return redirect('nesting:nesting') 

     var = {'form': form, 'content': content} 
     return render(request,self.template_name, var) 

forms.py

from django import forms 
from nesting.models import Identity_unique 
from nesting.models import Symptom_relation 


class Identity_Form(forms.ModelForm): 

    NIS = forms.CharField(
        widget=forms.TextInput(
          attrs={ 

           'placeholder': 'Enter NIS', 
           'class' : 'form-control' 
          } 
       ) 
    ) 

    first_Name = forms.CharField(
       widget=forms.TextInput(
         attrs={ 

          'placeholder': 'Enter First Name', 
          'class' : 'form-control' 
         } 
      ) 
    ) 
    last_Name = forms.CharField(

     widget=forms.TextInput(
       attrs={ 

        'placeholder': 'Enter Last Name', 
        'class' : 'form-control' 
       } 
     ) 
    ) 

    location = forms.CharField(

      widget=forms.TextInput(
         attrs= { 

         'placeholder':'Enter Address', 
         'class':'form-control' 

         } 
      ) 
    ) 

    date_of_birth = forms.DateField(

      required = False, 
       widget=forms.TextInput(
          attrs= { 

          'placeholder' : 'Enter Birthday', 
          'class':'form-control' 

          } 
       ), 
     ) 

    contact = forms.CharField(

        widget=forms.TextInput(
           attrs= { 

           'placeholder':'Enter Contact', 
           'class':'form-control' 

           } 
        ) 
      ) 


    class Meta: 

     model = Identity_unique 

     fields = ('NIS', 'first_Name', 'last_Name', 'location', 'date_of_birth', 'contact',) 

編輯

nesting.html

<form method = 'post' novalidate> 
    {% csrf_token %} 

    {% if form.non_field_errors %} 
     <div class="alert alert-danger" role="alert"> 
     {% for error in form.non_field_errors %} 
      {{ error }} 
     {% endfor %} 
     </div> 
    {% endif %} 

    <div class = "form-row"> 
     <div class = "form-group col-md-6"> 
     {{ form.NIS.errors }} 
     {{ form.NIS }} 
     </div> 

     <div class = "form-group col-md-6"> 
     {{form.Contact.errors}} 
     {{form.Contact}} 
     </div> 
    </div> 

    <div class = "form-row"> 
     <div class = "form-group col-md-6"> 
     {{form.first_Name.errors}} 
     {{form.first_Name}} 
     </div> 

     <div class = "form-group col-md-6"> 
     {{form.last_Name.errors}} 
     {{form.last_Name}} 
     </div> 
    </div> 

    <div class = "form-row"> 
     <div class = "form-group col-md-6"> 
     {{form.location.errors}} 
     {{form.location}} 
     </div> 

     <div class = "form-group col-md-6"> 
     {{form.date_of_birth.errors}} 
     {{form.date_of_birth}} 
     </div> 
    </div> 
    <button class = "btn-primary btn-large btn ">Submit</button> 
</form> 
+0

在視圖中打印'form.errors'或在模板中打印'{{form.errors}}'以查看錶單爲什麼無效。問題可能出現在您的模板中,您尚未顯示。 – Alasdair

+0

@Alasdair我將模板添加到問題陳述中。 –

回答

1

您呈現在你的模板不匹配的表單中的字段的字段 - 這樣的形式將無法驗證。具體而言,您的表單中有一個contact字段,您試圖在form.Contact的模板中呈現該字段。

大小寫問題 - contactContact不一樣,因爲它目前您的contact字段根本不會被渲染。 form.errors將包含突出顯示此問題的錯誤消息。

您在字段名稱中使用的大寫字母很不一致,因此很容易出現這樣的錯誤。在Django中的公約是字段名稱較低。