Python Django数据库错误没有这样的表
我对Django有点陌生,我似乎找不到解决这个问题的办法。我已经捣碎沙子好几天了 我有一个SQLite3数据库,在我的视图中使用它时,它可以很好地用于我的所有模型。但是,其中一个类上的admin视图总是失败,并出现一个错误,“DatabaseError at/admin/profiles/address”/ 没有这样的表:配置文件\地址。“ 我的个人资料应用程序有两个模型类Python Django数据库错误没有这样的表,python,database,django,sqlite,admin,Python,Database,Django,Sqlite,Admin,我对Django有点陌生,我似乎找不到解决这个问题的办法。我已经捣碎沙子好几天了 我有一个SQLite3数据库,在我的视图中使用它时,它可以很好地用于我的所有模型。但是,其中一个类上的admin视图总是失败,并出现一个错误,“DatabaseError at/admin/profiles/address”/ 没有这样的表:配置文件\地址。“ 我的个人资料应用程序有两个模型类 from django.db import models from django.contrib.auth.models
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.ForeignKey(User)
stripe_id = models.CharField(max_length=300)
timestamp = models.DateTimeField(auto_now_add=True)
update = models.DateTimeField(auto_now_add=False, auto_now=True)
def __unicode__(self, ):
return str(self.user)
class Address(models.Model):
user = models.ForeignKey(User)
nickname = models.CharField(max_length=120, null=True, blank=True)
address1 = models.CharField(max_length=300)
address2 = models.CharField(max_length=300, null=True, blank=True)
city = models.CharField(max_length=300)
state = models.CharField(max_length=300)
country = models.CharField(max_length=300)
postal_code = models.CharField(max_length=300)
default_address = models.BooleanField(default=False)
billing_address = models.BooleanField(default=False)
shipping_address = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True)
update = models.DateTimeField(auto_now_add=False, auto_now=True)
def __unicode__(self, ):
return self.address1
admin.py文件如下所示:
from django.contrib import admin
from .models import Address, Profile
class ProfileAdmin(admin.ModelAdmin):
class Meta:
model = Profile
admin.site.register(Profile, ProfileAdmin)
class AddressAdmin(admin.ModelAdmin):
class Meta:
model = Address
admin.site.register(Address, AddressAdmin)
当我对表执行查询时,它存在:
$ python manage.py sql profiles
BEGIN;
CREATE TABLE "profiles_profile" (
"id" integer NOT NULL PRIMARY KEY,
"user_id" integer NOT NULL REFERENCES "auth_user" ("id"),
"stripe_id" varchar(300) NOT NULL,
"timestamp" datetime NOT NULL,
"update" datetime NOT NULL
)
;
CREATE TABLE "profiles_address" (
"id" integer NOT NULL PRIMARY KEY,
"user_id" integer NOT NULL REFERENCES "auth_user" ("id"),
"nickname" varchar(120),
"address1" varchar(300) NOT NULL,
"address2" varchar(300),
"city" varchar(300) NOT NULL,
"state" varchar(300) NOT NULL,
"country" varchar(300) NOT NULL,
"postal_code" varchar(300) NOT NULL,
"default_address" bool NOT NULL,
"billing_address" bool NOT NULL,
"shipping_address" bool NOT NULL,
"timestamp" datetime NOT NULL,
"update" datetime NOT NULL
)
;
admin中的视图显示Profiles表,但当我转到Address admin视图时,它会抛出错误
有什么想法吗?我能找到的其他答案似乎都没有这个问题/解决方案,除非我是个太不懂的新手。谢谢
-----更新------
感谢Peter在评论中的发言。一旦我意识到数据库不正确,我就能够进入实际的表并编辑数据库。我尝试使用dbshell选项,但它在学习中似乎有一点开销。我绝对推荐SQLite工作室。工作非常出色,消除了命令行的开销。如果你使用它,我也会建议捐赠
这可能是因为您在创建模型类后没有执行
syncdb
。您是否在seetings.py中添加了应用程序?您尝试测试表是否存在的方式是错误的manage.py sql
输出创建表所需的sql,但对数据库本身不做任何操作manage.py dbshell
通常会启动一个交互式数据库会话,您可以在其中确认表的存在,尽管我不确定它是否可以与sqlite一起使用。当然是syncdb,谢谢您的建议。啊,我没有意识到它不是实际的数据库。非常感谢,这可能就是问题所在。syncdb
应该创建必要的表(如果它们还不存在的话)——它不会更改现有的表,但不会引发您在这里看到的异常。