Для моей основы c, элементарной Django CMS, в моей попытке добавить функцию переключения к публикации в блоге sh / unpubli sh (я назвал свое приложение «эссе» и классом). объект в моих моделях - is_published
), я столкнулся с ошибкой OperationalError при попытке использовать панель администратора для добавления содержимого эссе. Я ожидаю, что смогу установить флажок для публикации / отмены публикации sh, но теперь я даже не могу получить доступ к панели инструментов.
Вот часть трассировки с моего сервера Django:
File "/home/<user>/dev/projects/python/2018-and-2020/<projectdir>/venv/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/home/<user>/dev/projects/python/2018-and-2020/<projectdir>/venv/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 383, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such column: essays_essayarticle.is_published
Отладочная трассировка усиливает приведенную выше ошибку OperationalError:
OperationalError at /admin/essays/essayarticle/
no such column: essays_essayarticle.is_published
Request Method: GET
Request URL: http://<DN>.ngrok.io/admin/essays/essayarticle/
Django Version:2.2.11
Exception Type: OperationalError
Exception Value:
no such column: essays_essayarticle.is_published
Exception Location:
/home/<user>/dev/projects/python/2018-and-2020/<projectdir>/venv/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py in execute, line 383
Python Executable:
/home/<user>/dev/projects/python/2018-and-2020/<projectdir>/venv/bin/python
`Fri, 1 May 2020 19:37:31 +0000
Значение исключения указывает «нет такого столбца», что является ссылкой на мою базу данных. Я использую SQlite3 для тестирования. До этого OperationalError я устранял проблемы с DummyNode и «isinstance django .db.migrations.exceptions.NodeNotFoundError: Migration». Предыдущее решение, к которому я пришел, было удалить мои миграции в двух из моих приложений. Этот SO-ответ является частным решением, которое решило проблему: { ссылка }
В соответствии с предложением @ Laila Buabbas , чтобы уточнить, я удалил каталог моей миграции и вызвал: python manage.py makemigrations app_name
для каждого из моих двух приложений. Так что предыдущая проблема SQLite была решена. Но я не могу понять этот новый OperationalError, описанный выше.
Проблема связана с моим views.py / models.py (скопировано ниже)? Я не могу сузить это более конкретно c, чем это. Вот часть класса, определенного в моем файле models.py (с новой строкой потенциальной проблемы, добавленной в конце):
class EssayArticle(models.Model):
title = models.CharField(max_length=256)
web_address = models.CharField(max_length=256)
web_address_slug = models.SlugField(blank=True, max_length=512)
content = models.TextField(blank=True)
is_published = models.BooleanField(default=True)
Вот соответствующие строки из соответствующей функции в моем views.py:
def article(request, web_address):
try:
article = EssayArticle.objects.get(
web_address_slug=web_address) # .filter(is_published=True)
except EssayArticle.DoesNotExist:
raise Http404('Article does not exist!')
context = {
'article': article,
}
return render(request, 'essays/article.html', context)
Комментирование в нашей работе .filter(is_published=True)
не останавливает и не изменяет ошибку отладки.
Мой локальный блок разработчика - Manjaro Linux с Django v2.2.11. Я использую Python v3.8.2.
Вот некоторые ресурсы, которые я уже использовал: