【问题标题】:i m getting no such table: customer_customer error我没有得到这样的表:customer_customer 错误
【发布时间】: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


【解决方案1】:

您还必须将当前模块包含到设置文件中:

INSTALLED_APPS = (
'suit',  # django-suit
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.humanize',

'simple_history',
'localflavor',
'displays',
'products',)

products - 这是我的自定义模块,包含模型等。在它被包含后,像上面写的那样进行迁移。

【讨论】:

  • OP 说表单正在渲染,Customer 模型出现在 admin 中,这意味着相关应用程序已经包含在 INSTALLED_APPS 中。
猜你喜欢
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2018-06-21
  • 2010-12-29
  • 2017-12-06
  • 1970-01-01
相关资源
最近更新 更多