繁体   English   中英

django.db.utils.ProgrammingError:关系“blog_category”不存在

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM