2017-10-19 68 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中的公约是字段名称较低。