Python Django数据库错误没有这样的表

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

我对Django有点陌生,我似乎找不到解决这个问题的办法。我已经捣碎沙子好几天了

我有一个SQLite3数据库,在我的视图中使用它时,它可以很好地用于我的所有模型。但是,其中一个类上的admin视图总是失败,并出现一个错误,“DatabaseError at/admin/profiles/address”/ 没有这样的表:配置文件\地址。“

我的个人资料应用程序有两个模型类

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
应该创建必要的表(如果它们还不存在的话)——它不会更改现有的表,但不会引发您在这里看到的异常。