2016-04-27 78 views
2

我创建了一个模型语言。我做了makemigrationsmigrate部分。一切都很顺利。我在设置文件中注册了我的数据库。Django Admin没有这样的表

当我在语言表点击管理页面上我得到这样的:

OperationalError at /admin/testdb/language/ 
no such table: testdb_language 
Request Method: GET 
Request URL: http://localhost:8000/admin/testdb/language/ 
Django Version: 1.9.5 
Exception Type: OperationalError 
Exception Value:  
no such table: testdb_language 
Exception Location: /Users/nep/Documents/Development/Private/testdjango/myvenv/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py in execute, line 323 
Python Executable: /Users/nep/Documents/Development/Private/testdjango/myvenv/bin/python 
Python Version: 3.5.1 
Python Path:  
['/Users/nep/Documents/Development/Private/testdjango', 
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', 
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', 
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', 
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', 
'/Users/nep/Documents/Development/Private/testdjango/myvenv/lib/python3.5/site-packages'] 

我的模式是这样定义的:

from django.db import models 

class Oxn(models.Model): 
    objectId = models.CharField(max_length=100, unique=True) 
    name = models.CharField(max_length=100) 
    picture = models.CharField(max_length=200) 

class Language(models.Model): 
    objectId = models.CharField(max_length=100, unique=True) 
    code = models.CharField(max_length=10) 
    language = models.CharField(max_length=100) 

我没有看到这个问题。有人能帮我吗?

编辑:

这是迁移的输出:

(myvenv) ➜ gins4udjango python manage.py showmigrations  
admin 
[X] 0001_initial 
[X] 0002_logentry_remove_auto_add 
auth 
[X] 0001_initial 
[X] 0002_alter_permission_name_max_length 
[X] 0003_alter_user_email_max_length 
[X] 0004_alter_user_username_opts 
[X] 0005_alter_user_last_login_null 
[X] 0006_require_contenttypes_0002 
[X] 0007_alter_validators_add_error_messages 
contenttypes 
[X] 0001_initial 
[X] 0002_remove_content_type_name 
ginsdb 
[X] 0001_initial 
sessions 
[X] 0001_initial 

EDIT

0001_initial.py从迁移有以下内容:

# -*- coding: utf-8 -*- 
# Generated by Django 1.9.5 on 2016-04-29 14:51 
from __future__ import unicode_literals 

from django.db import migrations, models 
import django.db.models.deletion 


class Migration(migrations.Migration): 

    initial = True 

    dependencies = [ 
    ] 

    operations = [ 
     migrations.CreateModel(
      name='Country', 
      fields=[ 
       ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 
       ('objectId', models.CharField(max_length=100, unique=True)), 
       ('name', models.CharField(max_length=100)), 
      ], 
     ), 
     migrations.CreateModel(
      name='Gin', 
      fields=[ 
       ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 
       ('objectId', models.CharField(max_length=100, unique=True)), 
       ('alcohol', models.FloatField(blank=True, default=None, null=True)), 
       ('name', models.CharField(max_length=100)), 
       ('picture', models.CharField(max_length=200)), 
      ], 
     ), 
     migrations.CreateModel(
      name='GinLocal', 
      fields=[ 
       ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 
       ('objectId', models.CharField(max_length=100, unique=True)), 
       ('origin', models.TextField()), 
       ('serve', models.TextField()), 
       ('aroma', models.TextField()), 
       ('country', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ginsdb.Country', to_field='objectId')), 
       ('gin', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ginsdb.Gin', to_field='objectId')), 
      ], 
     ), 
     migrations.CreateModel(
      name='Language', 
      fields=[ 
       ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 
       ('objectId', models.CharField(max_length=100, unique=True)), 
       ('code', models.CharField(max_length=10)), 
       ('language', models.CharField(max_length=100)), 
      ], 
     ), 
     migrations.CreateModel(
      name='Type', 
      fields=[ 
       ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 
       ('objectId', models.CharField(max_length=100, unique=True)), 
       ('typeName', models.CharField(max_length=100)), 
       ('language', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ginsdb.Language', to_field='objectId')), 
      ], 
     ), 
     migrations.AddField(
      model_name='ginlocal', 
      name='language', 
      field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ginsdb.Language', to_field='objectId'), 
     ), 
     migrations.AddField(
      model_name='ginlocal', 
      name='types', 
      field=models.ManyToManyField(to='ginsdb.Type'), 
     ), 
     migrations.AddField(
      model_name='country', 
      name='language', 
      field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ginsdb.Language', to_field='objectId'), 
     ), 
    ] 
+0

“./manage.py showmigrations”显示什么? 'testdb'应用程序的迁移内容是什么? – Alasdair

+0

我已将它们添加到主题 – user1007522

+0

哪个应用程序是'Language'和'Oxn'中的?它真的叫'testdb'吗? – Alasdair

回答

3

0001_initial迁移ginsdb应用程序包含Language模型,所以它应该在运行迁移时创建。

如果您仍在开发并且没有任何重要数据,那么最简单的方法就是删除数据库,然后重新运行新数据库的迁移。只需删除sqlite数据库文件,然后重新运行./manage.py migrate

如果你需要保留数据库,那么你可以尝试手动创建模型,但这会更棘手。您可以通过运行查看所需的SQL以创建模型:

./manage.py sqlmigrate ginsdb 0001_initial 
+0

我做了,但仍然存在这个问题。 – user1007522

+0

谢谢。我只需在执行我自己的迁移之前执行manage.py migrate auth。因此,只需删除.sql文件并重做一切:-)。谢谢 – user1007522

+1

如果您在迁移文件中将依赖关系更改为'dependencies = [(u'auth','__first __')]'',那么Django将以正确的顺序运行它们,而且您不必手动运行首先认证迁移。 – Alasdair

相关问题