2016-04-27 87 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

相關問題