【发布时间】:2016-03-31 11:48:19
【问题描述】:
基本上我想接受表单中的值,即客户表单并将值保存在数据库中。我正在使用 django 1.9 和 python 3.5.4。我可以看到我的 html 表单,但是当我输入值并提交时,我显示上述错误,当我转到管理页面并单击客户时,它再次显示上述错误。我是 python n Django 的新手。
这是views.py
from django.shortcuts import render
from .forms import CustomerForm
from .models import Customer
#from django.http return HttpResponse
def index(request):
if request.method == 'POST':
form = CustomerForm(request.POST)
if form.is_valid():
cid = request.POST.get('cid','')
name = request.POST.get('name','')
age = request.POST.get('age','')
dob = request.POST.get('dob','')
income = request.POST.get('income','')
address = request.POST.get('address','')
city = request.POST.get('city','')
pincode = request.POST.get('pincode','')
c_obj = Customer(cid=cid, name=name, age=age, dob=dob,
income=income, address=address, city=city, pincode=pincode)
c_obj.save()
return HttpResponseRedirect(reverse('customer/customer.html '))
else:
form = CustomerForm()
return render(request,'customer/customer.html',{"form":form})
这是models.py
from django.db import models
from django.forms import ModelForm
class Customer(models.Model):
cid = models.IntegerField(primary_key=True)
name = models.CharField(max_length=140)
age = models.IntegerField()
dob = models.DateField()
income = models.IntegerField()
address = models.CharField(max_length=140)
city = models.CharField(max_length=140)
pincode = models.IntegerField()
def __str__(self):
return self.cid
#class CustomerForm(ModelForm):
#class Meta:
#model = Customer
#fields = ['cid','name','age','dob','income','address','city','pincode']
这是forms.py
from django import forms
from .models import Customer
class CustomerForm(forms.Form):
cid = forms.IntegerField()
name = forms.CharField(max_length=140)
age = forms.IntegerField()
dob = forms.DateField()
income = forms.IntegerField()
address = forms.CharField(max_length=140)
city = forms.CharField(max_length=140)
pincode = forms.IntegerField()
def clean_cid(self):
cid = self.cleaned_data.get('cid')
return cid
def clean_name(self):
name = self.cleaned_data.get('name')
return name
def clean_age(self):
age = self.cleaned_data.get('age')
return age
def clean_dob(self):
dob = self.cleaned_data.get('dob')
return dob
def clean_income(self):
income = self.cleaned_data.get('income')
return income
def clean_address(self):
address = self.cleaned_data.get('address')
return address
def clean_city(self):
city = self.cleaned_data.get('city')
return city
def clean_pincode(self):
pincode = self.cleaned_data.get('pincode')
return pincode
我们将不胜感激。
【问题讨论】:
-
您是否运行了
python manage.py makemigrations后跟python manage.py migrate? -
此外,一旦你整理好你的模型和数据库,你可能想要let Django build your form for you based on your model。它更容易,并且您可以更好地保证您的表单与您的模型匹配。
-
我进行了迁移,但它也显示相同的错误@v1k45
-
INSTALLED_APPS = ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages' , 'django.contrib.staticfiles', 'customer', ] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR,'db .sqlite3'), } } 这是我的 settings.py 文件的一部分,我已经将客户包含在已安装的应用程序中,然后仍然存在错误。我需要在数据库部分进行任何更改吗?我正在使用默认数据库@Chris
-
我需要对我的代码进行任何更改吗?
标签: python django forms sqlite