【问题标题】:crispy error |as_crispy_field got passed an invalid or inexistent field脆皮错误 |as_crispy_field 传递了一个无效或不存在的字段
【发布时间】:2020-03-11 03:28:47
【问题描述】:

我想根据自己的需要自定义 django Model 字段并将数据提交到数据库中。 我相应地做了所有的事情。但是在运行该应用程序后,我得到了脆性错误。我无法找到我的错误。 请朋友们帮帮我。

Models.py如下

from django.db import models
from datetime import date
from configration.models import AddSite, AddDepartment, AddCategory, AddDesignation, Rate
# Create your models here.


class EmployeeRegistration(models.Model):
#Departmental Details

EmpId = models.IntegerField(verbose_name='EmpId')
Site = models.ForeignKey(AddSite,on_delete=models.CASCADE,max_length=150,verbose_name='Site')
Department = 
models.ForeignKey(AddDepartment,on_delete=models.CASCADE,max_length=150,verbose_name='Department')
Category = 
models.ForeignKey(AddCategory,on_delete=models.CASCADE,max_length=150,verbose_name='Category')
Designation = 
models.ForeignKey(AddDesignation,on_delete=models.CASCADE,max_length=150,verbose_name='Designation')
PfAllowance = models.BooleanField(default = True)
EsiAllowance = models.BooleanField(default = True)
Uan = models.PositiveIntegerField(null = False,verbose_name='Uan')
Pf = models.PositiveIntegerField(null = True,verbose_name='Pf')
AttendenceAward = models.BooleanField(default = True)
AttendenceAllowance = models.BooleanField(default = True)
ProfesionalTax = models.BooleanField(default = False)
Rate = models.PositiveIntegerField(null = True)
# Personal Details
Name = models.CharField(max_length=150,verbose_name='Name')
Father = models.CharField(max_length=150,verbose_name='Father')
Dob = models.DateField()
Gender = models.BooleanField(default = True)
#Female = models.BooleanField(default = False)
MaritalStatus = models.BooleanField(default = True)
Address = models.CharField(max_length=200,verbose_name='Address')
Aadhar = models.PositiveIntegerField(null=True)
pan = models.CharField(max_length=10)
choices = [('Working','WORKING'),('NotWorking','NOT WORKING')]
Status = models.CharField(choices=choices,blank = False,max_length=10,verbose_name='Status')
Doj = models.DateField(default = date.today)
Doe = models.DateField(blank = True,verbose_name = 'Doe',null = True)

def __str__(self):
    return '{name}'.format(name=self.Name)

views.py如下

from django.shortcuts import render
from .regform import regisForm
from django.http import HttpResponse
from configration.models import AddSite, AddCategory,Rate
from .models import EmployeeRegistration
# Create your views here.   
def ids():
   no = EmployeeRegistration.objects.count()
   if(no == None):
      number = 1
      return number
   else:
      number = no + 1
      return number

def registration_view(request,*args, **kwargs):
  emp_id = ids()
  EmployeeId={'EmpId':emp_id}
  form = regisForm(request.POST or None,initial=EmployeeId)
  print(form)
  if form.is_valid():
     form.save()
     form = regisForm()
  else:
     pass

  context = {
    'form':form,
    "contact":"active"
   }
return render(request,"registration.html",context)

registration.html如下

{% extends 'profilebase.html' %}
{% load crispy_forms_tags %}
{% block content%}
<div class="content-section">
<form method="POST" enctype="multipart/form-data" action="/register/"> {% csrf_token %}
  <fieldset class="form-group">
      <legend class="border-bottom mb-4">Register
      </legend>
      <div class="row">
        <div class="col-md-4">
          {{ form.EmpId | as_crispy_field }}
        </div>
      </div>
      <legend class="border-bottom mb-4">Departmental Details
      </legend>
      <div class="row">
        <div class="col-md-4">
          {{form.Site|as_crispy_field}}
        </div>
        <div class="col-md-8">
          {{form.Department|as_crispy_field}}
        </div>

      </div>
      <div class="row">
        <div class="col-md-4">
          {{form.Designation|as_crispy_field}}
        </div>
        <div class="col-md-8">
          {{form.Category|as_crispy_field}}
        </div>
        <div class="col-md-8">
          {{form.Uan|as_crispy_field}}
        </div>
        <div class="col-md-4">
          {{form.Pf|as_crispy_field}}
        </div>
        <div class="col-md-12">
          {{form.PfAllowance|as_crispy_field}}
          {{form.EsiAllowance|as_crispy_field}}
          {{form.ProfesionalTax|as_crispy_field}}
        </div>
      </div>
      <legend class="border-bottom mb-4">Personal Details
      </legend>
      <div class="row">
        <div class="col-md-4">
          {{form.Name|as_crispy_field}}
        </div>
        <div class="col-md-8">
          {{form.Father|as_crispy_field}}
        </div>
        <div class="col-md-4">
          {{form.Dob|as_crispy_field}}
        </div>
        <div class="col-md-12">
          {{form.Gender|as_crispy_field}}
          <!--{{form.Male|as_crispy_field}}
          {{form.Female|as_crispy_field}} -->
          {{form.MaritalStatus|as_crispy_field}}
        </div>
        <div class="col-md-12">
          {{form.Address|as_crispy_field}}
        </div>
        <div class="col-md-6">
          {{form.Aadhar|as_crispy_field}}
        </div>
        <div class="col-md-6">
          {{form.pan|as_crispy_field}}
        </div>
        <div class="col-md-4">
          {{form.Status|as_crispy_field}}
        </div>
        <div class="col-md-4">
          {{form.Doj|as_crispy_field}}
        </div>
        <div class="col-md-4">
          {{form.Doe|as_crispy_field}}
        </div>
      </div>

  </fieldset>

<div class="form-group">
  <button class="btn btn-success btn-lg" type="Submit">Submit</button>
</div>
</form>
</div>
{% endblock content %}

【问题讨论】:

    标签: python django django-crispy-forms


    【解决方案1】:

    试试这个:

    def registration_view(request,*args, **kwargs):
      emp_id = ids()
      EmployeeId={'EmpId':emp_id}
      form = regisForm(request.POST or None,initial=EmployeeId)
      print(form)
      if form.is_valid():
         form.save()
    
      else:
         return render(request,"registration.html",{"form": form, "contact":active})   #add this
    
      context = {
        "form":form,   #edit this
        "contact":active
       }
    return render(request,"registration.html",context)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-03
      • 2021-12-31
      • 1970-01-01
      • 2019-11-20
      • 2020-11-03
      • 2021-08-31
      • 1970-01-01
      • 2022-07-01
      相关资源
      最近更新 更多