首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >django没有这样的表:

django没有这样的表:
EN

Stack Overflow用户
提问于 2012-10-08 23:31:27
回答 6查看 119.4K关注 0票数 64

我在Django中设置了如下模型。

代码语言:javascript
复制
class Pupil(models.Model):
    forename = models.CharField(max_length=30)
    surname = models.CharField(max_length=30)
    dateofbirth = models.DateField()
    year = models.IntegerField()
    class_group = models.CharField(max_length=30)
    email = models.EmailField(blank=True)
    assignments = models.ManyToManyField('Assignment', verbose_name='related assignments')

    def __unicode__(self):
        return u'%s %s' % (self.forename, self.surname)

class Subject(models.Model):
    name = models.CharField(max_length=30)
    level = models.CharField(max_length=30)
    teachers = models.ManyToManyField('Teacher', verbose_name='related teachers')

    def __unicode__(self):
        return self.name

class Teacher(models.Model):
    forename = models.CharField(max_length=30)
    surname = models.CharField(max_length=30)
    email = models.EmailField(blank=True)

    def __unicode__(self):
        return u'%s %s' % (self.forename, self.surname)

class Assignment(models.Model):
    assignment_name = models.CharField(max_length=30)
    date_assigned = models.DateField()
    date_submitted = models.DateField()

    def __unicode__(self):
        return self.assignment_name

当我尝试在管理员中添加学生并将分配附加到该学生时,我得到一个数据库错误-

代码语言:javascript
复制
no such table: homework_pupil_assignments

在阅读了this之后,我意识到这可能是因为django没有像manage.py sqlall homework那样更新我的模型的更改

我看到以下几点:

代码语言:javascript
复制
BEGIN;
CREATE TABLE "homework_pupil_assignments" (
    "id" integer NOT NULL PRIMARY KEY,
    "pupil_id" integer NOT NULL,
    "assignment_id" integer NOT NULL,
    UNIQUE ("pupil_id", "assignment_id")
)
;
CREATE TABLE "homework_pupil" (
    "id" integer NOT NULL PRIMARY KEY,
    "forename" varchar(30) NOT NULL,
    "surname" varchar(30) NOT NULL,
    "dateofbirth" date NOT NULL,
    "year" integer NOT NULL,
    "class_group" varchar(30) NOT NULL,
    "email" varchar(75) NOT NULL
)
;
CREATE TABLE "homework_subject_teachers" (
    "id" integer NOT NULL PRIMARY KEY,
    "subject_id" integer NOT NULL,
    "teacher_id" integer NOT NULL,
    UNIQUE ("subject_id", "teacher_id")
)
;
CREATE TABLE "homework_subject" (
    "id" integer NOT NULL PRIMARY KEY,
    "name" varchar(30) NOT NULL,
    "level" varchar(30) NOT NULL
)
;
CREATE TABLE "homework_teacher" (
    "id" integer NOT NULL PRIMARY KEY,
    "forename" varchar(30) NOT NULL,
    "surname" varchar(30) NOT NULL,
    "email" varchar(75) NOT NULL
)
;
CREATE TABLE "homework_assignment" (
    "id" integer NOT NULL PRIMARY KEY,
    "assignment_name" varchar(30) NOT NULL,
    "date_assigned" date NOT NULL,
    "date_submitted" date NOT NULL
)
;
COMMIT;

然后我安装了South,按照指示启动并运行现有的应用程序,希望能成功地同步这些表。一点也不快乐。

有人能建议我如何让数据库(sqlite3)反映模型或指出我做错了什么吗?

EN

回答 6

Stack Overflow用户

发布于 2016-08-19 11:35:33

你可以试试这个!

代码语言:javascript
复制
python manage.py migrate --run-syncdb

我在Django 1.9和1.10上也遇到了同样的问题。这段代码行得通!

票数 92
EN

Stack Overflow用户

发布于 2017-11-21 16:57:19

如果您使用的是最新版本的django 2.x或1.11.x,则必须首先创建迁移,

代码语言:javascript
复制
python manage.py makemigrations

在此之后,您只需运行迁移命令来同步数据库。

代码语言:javascript
复制
python manage.py migrate --run-syncdb

这些命令将同步您的数据库和python模型,并且第二个命令将打印它后面的所有sql。

票数 12
EN

Stack Overflow用户

发布于 2012-10-09 00:05:40

sqlall只打印SQL,并不执行它。syncdb将创建尚未创建的表,但不会修改现有表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12784835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档