2016-04-27 3 views
2

Я создал модель Язык. Я сделал makemigrations и migrate часть. Все прошло хорошо. Я зарегистрировал свой db в файле настроек.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 

РЕДАКТИРОВАТЬ

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

В каком приложении «Язык» и «Оксн»? Это действительно называется '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

Смежные вопросы