2016-06-25 3 views
0

Я делаю блог, используя django. Я создал приложение с именем блога, и в models.py я создал следующую модель, для статей на этом блоге:Тип исключения: OperationalError - Исключение Значение: нет такого столбца: blog_article.slug

class Article(models.Model): 
    title = models.CharField(max_length = 100, unique=True) 
    slug = models.SlugField(max_length=100, unique=True) 
    author = models.CharField(max_length = 100) 
    COUNTRIES = (
     ("fr", "france"), 
     ("ge", "germany"), 
     ) 
    nationality = models.CharField(choices= COUNTRIES, max_length = 20) 
    publication_date = models.DateTimeField() 
    content = models.TextField() 

    def __unicode__(self): 
     return '%s' % self.title 

    @permalink 
    def get_absolute_url(self): 
     return ('view_article', None, { 'slug': self.slug }) 

В admin.py я сделал следующее, чтобы иметь слизняка с уже заполнено названием:

class ArticleAdmin(admin.ModelAdmin): 
    exclude = ['posted'] 
    prepopulated_fields = {'slug': ('title',)} 

Я побежал питон manage.py makemigrations и мигрируют несколько раз, пытался пережать миграции, как я нашел в других постах здесь. Когда я запускаю makemigrations Получаю: «Изменений не обнаружено». Когда я запускаю migrate Я получаю «Никаких миграций для применения».

Однако, когда я runserver и перейти к интерфейсу администратора для того, чтобы добавить новую статью, заполнить «название» поле, видеть поле пробкового заполнено автоматически (из-за prepopulation) и хочет SAVE, вот что я получаю:

Request Method: POST 
Request URL: http://127.0.0.1:8000/admin/blog/article/add/ 

Django Version: 1.9.4 
Python Version: 2.7.11 
Installed Applications: 
['django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'blog.apps.BlogConfig'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware'] 



Traceback: 

File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response 
    149.      response = self.process_exception_by_middleware(e, request) 

File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response 
    147.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in wrapper 
    541.     return self.admin_site.admin_view(view)(*args, **kwargs) 

File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in _wrapped_view 
    149.      response = view_func(request, *args, **kwargs) 

File "/Library/Python/2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    57.   response = view_func(request, *args, **kwargs) 

File "/Library/Python/2.7/site-packages/django/contrib/admin/sites.py" in inner 
    244.    return view(request, *args, **kwargs) 

File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in add_view 
    1437.   return self.changeform_view(request, None, form_url, extra_context) 

File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in _wrapper 
    67.    return bound_func(*args, **kwargs) 

File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in _wrapped_view 
    149.      response = view_func(request, *args, **kwargs) 

File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in bound_func 
    63.     return func.__get__(self, type(self))(*args2, **kwargs2) 

File "/Library/Python/2.7/site-packages/django/utils/decorators.py" in inner 
    184.      return func(*args, **kwargs) 

File "/Library/Python/2.7/site-packages/django/contrib/admin/options.py" in changeform_view 
    1370.    if form.is_valid(): 

File "/Library/Python/2.7/site-packages/django/forms/forms.py" in is_valid 
    161.   return self.is_bound and not self.errors 

File "/Library/Python/2.7/site-packages/django/forms/forms.py" in errors 
    153.    self.full_clean() 

File "/Library/Python/2.7/site-packages/django/forms/forms.py" in full_clean 
    364.   self._post_clean() 

File "/Library/Python/2.7/site-packages/django/forms/models.py" in _post_clean 
    402.    self.validate_unique() 

File "/Library/Python/2.7/site-packages/django/forms/models.py" in validate_unique 
    411.    self.instance.validate_unique(exclude=exclude) 

File "/Library/Python/2.7/site-packages/django/db/models/base.py" in validate_unique 
    922.   errors = self._perform_unique_checks(unique_checks) 

File "/Library/Python/2.7/site-packages/django/db/models/base.py" in _perform_unique_checks 
    1017.    if qs.exists(): 

File "/Library/Python/2.7/site-packages/django/db/models/query.py" in exists 
    651.    return self.query.has_results(using=self.db) 

File "/Library/Python/2.7/site-packages/django/db/models/sql/query.py" in has_results 
    501.   return compiler.has_results() 

File "/Library/Python/2.7/site-packages/django/db/models/sql/compiler.py" in has_results 
    819.   return bool(self.execute_sql(SINGLE)) 

File "/Library/Python/2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql 
    848.    cursor.execute(sql, params) 

File "/Library/Python/2.7/site-packages/django/db/backends/utils.py" in execute 
    79.    return super(CursorDebugWrapper, self).execute(sql, params) 

File "/Library/Python/2.7/site-packages/django/db/backends/utils.py" in execute 
    64.     return self.cursor.execute(sql, params) 

File "/Library/Python/2.7/site-packages/django/db/utils.py" in __exit__ 
    95.     six.reraise(dj_exc_type, dj_exc_value, traceback) 

File "/Library/Python/2.7/site-packages/django/db/backends/utils.py" in execute 
    64.     return self.cursor.execute(sql, params) 

File "/Library/Python/2.7/site-packages/django/db/backends/sqlite3/base.py" in execute 
    323.   return Database.Cursor.execute(self, query, params) 

**Exception Type: OperationalError at /admin/blog/article/add/ 
Exception Value: no such column: blog_article.slug** 

Получаю тот же результат, если я нажму «Статья» в интерфейсе администратора. Я пытался раздавить миграцию, переиграть и снова мигрировать, но это не сработало ... Я везде искал и не нашел ответа, который сработал для меня - большое вам спасибо, если вы можете дать несколько советов по этому поводу!

+0

Django версии? вы попробовали 'python manage.py makemigrations blog',' python manage.py migrate blog'? – ravigadila

+0

Версия Django: (1, 9, 4, 'final', 0) Да, я тоже пробовал эти команды, но они не изменили результат! –

ответ

0

Можете ли вы попробовать следующее?

Проверьте папку миграций. Допустим, вы добавили статью под my_project/blog/migrations/0020_... Тогда вы можете попробовать запустить:

./manage.py migrate blog 0019 =>, что вы должны получить сообщение об ошибке (blog_article таблица не существует, - не может быть удален)

Тогда подделать: ./manage.py migrate blog 0019 --fake

Затем мигрируют снова: ./manage.py migrate blog

+0

Большое спасибо за ваш ответ. К сожалению, я пробовал, и это не сработало! Я ранее удалял все миграции и makemigrations/migrate снова, в случае, если что-то было не так с папками переноса (и потому, что мое приложение находится на ранней стадии разработки, а это означает, что я не против удаления миграции). Здесь является то, что мой только миграция файл выглядит следующим образом (кроме __init__.py): –

+0

класса миграции (migrations.Migration): начальных = True зависимости = [ ] операции = [ migrations.CreateModel ( имени = "Статья ', fields = [ (' id ', models.AutoField (auto_created = True, primary_key = True, serialize = False, verbose_name =' ID ')), (' title ', models.CharField (max_length = 100, unique = True)), ('slug', модели.SlugField (max_length = 100, уникальный = True)), ('автор', models.CharField (max_length = 100)), ('содержание', models.TextField()), ], ), –

+0

ИТАК это, вероятно, не проблема миграции. Можете ли вы подтвердить, что таблица создана со всеми ее столбцами (используя необработанный SQL)? Если вы закомментируете строку с помощью 'prepopulated_fields', как выглядит страница администратора? –

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