![](/img/trans.png)
[英]django.db.utils.ProgrammingError: relation “…” does not exist
[英]django.db.utils.ProgrammingError: relation "blog_category" does not exist
我開始了一個 Django 項目,但我不確定我缺少什么。 在此錯誤之前,我刪除了數據庫,並刪除了遷移,因為我希望帖子具有 UUID。
當我創建 docker-compose-prod.yml 文件和 settings.py 文件中的所有 django 安全內容時出現此錯誤(我假設我在 settings.py 文件中編寫的所有安全代碼都有效,因為警告標志確實有效不顯示):
django.db.utils.ProgrammingError: relation "blog_category" does not exist
截至目前,我不確定我做錯了什么? 另外,我不想刪除遷移或在數據庫中進行任何更改,因為我有“發布數據”,我記得我很久以前遇到過這個問題,但決定忽略它(意思是我刪除了遷移)。
錯誤的更詳細版本:
web_1 | Exception in thread django-main-thread:
web_1 | Traceback (most recent call last):
web_1 | File "/usr/local/lib/python3.8/site-
packages/django/db/backends/utils.py", line 86, in _execute
web_1 | return self.cursor.execute(sql, params)
web_1 | psycopg2.errors.UndefinedTable: relation "blog_category" does not exist
web_1 | LINE 1: ...log_category"."name", "blog_category"."name" FROM "blog_cate...
...
web_1 | File "/code/datablog_project/urls.py", line 30, in
<module>
web_1 | path('',include('blog.urls')),
web_1 | File "/usr/local/lib/python3.8/site-
packages/django/urls/conf.py", line 34, in include
...
web_1 | File "/code/blog/urls.py", line 3, in <module>
web_1 | from .views import (
web_1 | File "/code/blog/views.py", line 25, in <module>
web_1 | from .forms import PostForm, EditForm, CommentForm,
EditCommentForm
web_1 | File "/code/blog/forms.py", line 17, in <module>
web_1 | for item in choices:
我檢查了我的 url、視圖、forms 和 model。 而且我似乎無法發現錯誤。
url.py:
from .views import (
...
CategoryView,
CategoryListView,
...
)
urlpatterns = [
...
path('category/<str:cats>/', CategoryView, name='category'),
path('category-list/',CategoryListView, name='category-list'),
...
]
視圖.py:
from .models import Post, Category, Comment
from .forms import PostForm, EditForm, CommentForm, EditCommentForm
...
def CategoryView(request, cats):
category_posts = Post.objects.filter(category=cats.title().replace('-',' '))
return render(request, 'categories.html', {'cats': cats.title().replace('-',' '), 'category_posts': category_posts})
def CategoryListView(request):
cat_menu_list = Category.objects.all()
return render(request, 'blog/category_list.html', {'cat_menu_list': cat_menu_list})
...
forms.py:
from django import forms
from .models import Post,Category, Comment
choices = Category.objects.all().values_list('name', name')
choice_list = []
for item in choices:
choice_list.append(item)
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields =('title', 'category', 'body')
widgets = {
'title': forms.TextInput(attrs={'class': 'form-control'}),
'category': forms.Select(choices=choice_list,attrs={'class': 'form-control'}),
'body': forms.Textarea(attrs={'class': 'form-control'}),
}
模型.py:
class Category(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('post_detail', args=[str(self.id)])
...
class Post(models.Model):
id = models.UUIDField(
primary_key = True,
default = uuid.uuid4,
editable = False)
title = models.CharField(max_length=200)
author = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
)
body = RichTextField()
category = models.CharField(max_length=255, default='Miscellaneous')
...
我的博客應用程序中的第二次遷移:
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('blog', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Category',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255)),
],
),
migrations.RemoveField(
model_name='profile',
name='linkedin_url',
),
migrations.RemoveField(
model_name='profile',
name='website_url',
),
migrations.AddField(
model_name='post',
name='category',
field=models.CharField(default='Miscellaneous', max_length=255),
),
]
嗨兄弟我會幫助你的。 為了解決這個問題,您必須復制您的應用程序文件並粘貼到您有一個空文件夾示例:此文件夾名稱 Django 之后您必須從項目中刪除應用程序並且您必須在項目中創建應用程序並且您必須更改應用程序名稱您的應用名為商店,您必須將名稱更改為 MyStore 或其他名稱,但在創建應用命令之后,您不得編寫商店真實應用名稱:
python manage.py startapp app_name
您必須將項目中的真實應用程序名稱更改為創建的應用程序名稱,然后從名為 Django 的文件夾中復制應用程序文件,然后您必須更改您的 Model 的名稱示例:您的 ZA559B87068928 名稱必須更改為您的 Model其他名稱,如 HerProduct 之后,您必須編寫以下命令:
python manage.py makemigrations
python manage.py migrate
現在你成功解決了這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.