每次将数据库部署到heroku时,我的数据库都会出现问题。该代码在localhost上运行良好,但在部署时显示ProgrammingError。
当我从代码中删除类别时,它似乎可以工作,但auth面板仍然存在另一个问题。
这是视图.py代码
class BlogView(ListView):
model = Post
template_name = 'blog.html'
ordering = ['-post_date']
paginate_by = 10
def get_context_data(self, *args, **kwargs):
genres_menu = Category.objects.all()
context = super(BlogView, self).get_context_data(*args, **kwargs)
context["genres_menu"] = genres_menu
print(context)
return context
这是模型.py代码
from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
from datetime import datetime, date
from ckeditor.fields import RichTextField
class Category(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('blog')
class Post(models.Model):
title = models.CharField(max_length=255)
author = models.ForeignKey(User, on_delete=models.CASCADE)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
thumbnail = models.ImageField(null=True, blank=True, upload_to="thumb_images/blog_post")
snippet = models.CharField(max_length=255, default='This is a default snippet')
likes = models.ManyToManyField(User, related_name='blog_posts')
def total_likes(self):
return self.likes.count()
def __str__(self):
return self.title + ' | ' + str(self.author)
def get_absolute_url(self):
return reverse('blog')
这是url.py代码
从.views导入BlogView
urlpatterns = [
path('blog/', BlogView.as_view(), name='blog'),
]
这是的模板代码
{% if genres_menu %}
<div class="widget-area">
<div class="widget-collapse-btn">
<a class="accordion-toggle" data-bs-toggle="collapse" href="#collapseExample" role="button"
aria-expanded="false" aria-controls="collapseExample">
<h4 class="widget-collapse-title">Categories</h4>
</a>
</div>
<div class="collapse" id="collapseExample">
<div class="card card-body none-box">
<ul class="category-collapse">
{% for item in genres_menu %}
<li class="category-collapse-list">
<a href="{% url 'category' item|slugify %}">{{ item }}</a>
</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% endif %}
我试着用-python manage.py flush、makemigration清除数据库,然后再次迁移,但它保持不变。
对于这种问题,即使刷新迁移也不起作用,您只需要删除表blog_app_post。在迁移后运行python manage.py makemigrations app_name
之后运行python manage.py sqlmigrate app_name 0001_initial
,这将生成该特定应用程序的所有架构,然后查找表blog_app_post架构并复制它,然后手动创建该表。如果您的数据库是postgres,则只需连接到数据库并粘贴该架构。注意:这个解决方案实际上在开发模式或本地服务器中都很好