OperationalError at / no such table: blog_post



我正在Django做一个博客。但当我运行程序时,它会给我一个错误:OperationalError/没有这样的表:blog_post。我尝试删除migrations和db.sqlite3表,并运行migrations命令,但没有成功。

这是我的代码:

型号.py

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
from taggit.managers import TaggableManager

class PublishedManager(models.Manager):
def get_queryset(self):
return super(PublishedManager, self).get_queryset().filter(status='Published')

class Post(models.Model):
STATUS_CHOICES = (
('Draft', 'Draft'),
('Published', 'Published')
)
title = models.CharField(max_length=255)
body = models.TextField(null=True)
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts', null=True)
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
slug = models.SlugField(max_length=255, unique_for_date='publish')
status = models.CharField(max_length=15, choices=STATUS_CHOICES, default='Draft')
tags = TaggableManager()

objects = models.Manager()
published = PublishedManager()
def get_absolute_url(self):
return reverse('detail', args=[self.publish.year,
self.publish.month,
self.publish.day, self.slug])

def __str__(self):
return self.title
class Meta:
ordering = ('-publish',)

class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="comments")       
name = models.CharField(max_length=255)
email = models.EmailField()
body = models.TextField()
created = models.DateTimeField(auto_now_add=True)
active = models.BooleanField(default=False)
def __str__(self):
return f"Comment by {self.name} on {self.post}"
class Meta:
ordering = ('-created',) 

views.py

from django.shortcuts import redirect, render, get_object_or_404
from django.core.mail import send_mail
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from taggit.models import Tag
from django.db.models import Count
from django.contrib.auth.decorators import login_required
from .models import Post, Comment
from .forms import EmailPostForm, CommentForm, CreateBlog

@login_required(login_url='login')
def index(request, tag_slug=None):
object_list = Post.published.all()
tag = None
if tag_slug:
tag = get_object_or_404(Tag, slug=tag_slug)
object_list = object_list.filter(tags__in=[tag])
paginator = Paginator(object_list, 10)
page = request.GET.get('page') 
try:
posts = paginator.page(page)
except EmptyPage:
posts = paginator.page(1)
except PageNotAnInteger:
posts = paginator.page(paginator.num_pages)         
context = {'posts': posts, 'page': page, 'tag': tag}
return render(request, 'blog/index.html', context)

@login_required(login_url='login')
def detail(request, year, month, day, post):
post = get_object_or_404(Post, slug=post, status='Published',
publish__year=year,
publish__month=month,
publish__day=day)
comments = post.comments.filter(active=True)
new_comment = None
if request.method == "POST":
comment_form = CommentForm(data=request.POST)
if comment_form.is_valid():
new_comment = comment_form.save(commit=False)
new_comment.post = post
new_comment.save()
else:
comment_form = CommentForm()  
post_tags_ids = post.tags.values_list('id', flat=True)
similar_posts = Post.published.filter(tags__in=post_tags_ids).exclude(id=post.id)
similar_posts = similar_posts.annotate(same_tags=Count('tags')).order_by('-same_tags', '- 
       publish')[:4]       
context = {'post': post, 'comments': comments, 'new_comment': new_comment, 'comment_form': 
comment_form, 'similar_posts': similar_posts}
return render(request, 'blog/detail.html', context)

@login_required(login_url='login')
def share(request, pk):
post = get_object_or_404(Post, id=pk, status='Published')
sent = False
if request.method == "POST":
form = EmailPostForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
post_url = request.build_absolute_uri(post.get_absolute_url())
subject = f"{cd['name']} recommends you read {post.title}"
message = f"Read {post.title} at {post_url}nn" 
f"{cd['name']} comments: {cd['comments']}"
send_mail(subject, message, 'aryansan123@zohomail.in', [cd['to']])   
sent = True  
else:
form = EmailPostForm()
context = {'form': form, 'sent': sent, 'post': post}            
return render(request, 'blog/share.html', context)

def createBlog(request, pk):
post = get_object_or_404(Post, id=pk)
if request.method == "POST":
form = CreateBlog(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.post = post
form.save()
return redirect('index')
else:
form = CreateBlog()
context = {'form': form}
return render(request, 'blog/create.html', context)

index.html

{% extends 'blog/base.html' %}
{% block content %}
<table class="table table-striped table-hover">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Title</th>
<th scope="col">User</th>
<th scope="col">Status</th>
<th scope="col">Tags</th>
</tr>
</thead>
<tbody>
{% if tag %}
<h2>Posts tagged with "{{tag.name}}"</h2>
{% endif %} 
{% for post in posts %}
<tr>
<th scope="row">{{forloop.counter}}</th>
<td><a href="{{post.get_absolute_url}}">{{post.title}}</a></td>
<td>{{post.author.username}}</td>
<td>{{post.status}}</td> 
<td>
<p class="tags">  
Tags:
{% for tag in post.tags.all %}
<a href="{% url 'list_by_tag' tag.slug %}">{{tag.name}}</a>
{% if not forloop.last %}, {% endif %}
{% endfor %} 
</p> 
</td>  
</tr>
{% endfor %}  
</tbody>
</table>
{% include 'blog/pagination.html' with page=posts %}
{% endblock %}  

urls.py

from django.urls import path
from . import views

urlpatterns = [
path('', views.index, name="index"),
path('tag/<slug:tag_slug>/', views.index, name="list_by_tag"),
path('<int:year>/<int:month>/<int:day>/<slug:post>/', views.detail, name="detail"),
path('<int:pk>/share/', views.share, name="share"),
path('create/<int:pk>/', views.createBlog, name="create"),
]

我是姜戈的新手。如有任何帮助,我们将不胜感激。

1。布鲁,我也有同样的错误。这是因为你还没有迁移你的模型。

2。只需运行命令python manage.py makemigrations

3。然后运行python manage.py migrate,就可以开始了。

最新更新