Django 操作错误:迁移后没有此类列:blog\u post.user\u id
我已经完成了djangogirls教程,遇到了一个错误:没有这样的专栏:blog\u post.user\u id 这在我的本地服务器上非常有效,但在推到pythonywhere之后,我得到了操作错误 我使用的是Django 1.9、Python 3.4.3 我已经完成了python manage.py makemigrations,在Bash控制台上成功地进行了迁移,但是我仍然在站点上收到了错误消息。 然后我又尝试了一次,结果“没有检测到任何更改”和“没有要进行的迁移” 这是我的模特Django 操作错误:迁移后没有此类列:blog\u post.user\u id,django,operationalerror,Django,Operationalerror,我已经完成了djangogirls教程,遇到了一个错误:没有这样的专栏:blog\u post.user\u id 这在我的本地服务器上非常有效,但在推到pythonywhere之后,我得到了操作错误 我使用的是Django 1.9、Python 3.4.3 我已经完成了python manage.py makemigrations,在Bash控制台上成功地进行了迁移,但是我仍然在站点上收到了错误消息。 然后我又尝试了一次,结果“没有检测到任何更改”和“没有要进行的迁移” 这是我的模特 from
from django.contrib.auth.models import User
from django.utils import timezone
from django.core.urlresolvers import reverse
from django.db import models
from django.db.models.signals import pre_save
from django.utils.text import slugify
from django.conf import settings
def upload_location(instance, filename):
return "%s/%s" %(instance.id, filename)
class Post(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
title = models.CharField(max_length=200)
slug = models.SlugField(unique=True)
image = models.ImageField(upload_to=upload_location,
null=True,
blank=True,
width_field="width_field",
height_field="height_field")
height_field = models.IntegerField(default=0)
width_field = models.IntegerField(default=0)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
def get_absolute_url(self):
return reversal("posts:detail", kwargs={"slug": self.slug})
def pre_save_post_receiver (sender, instance, *args, **kwargs):
slug = slugify(instance.title)
exists = Post.objects.filter(slug=slug).exists()
if exists:
slug = "%s-%s" %(slug, instance.id)
instance.slug = slug
pre_save.connect(pre_save_post_receiver, sender=Post)
这是我的观点
from django.contrib import messages
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.utils import timezone
from .models import Post
from django.shortcuts import render, get_object_or_404, redirect
from .forms import PostForm
# Create your views here.
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
paginator = Paginator(posts, 5) # Show 25 contacts per page
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
posts = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
posts = paginator.page(paginator.num_pages)
return render(request, 'blog/post_list.html', {'posts':posts})
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
def post_new(request):
if not request.user.is_staff or not request.user.is_superuser:
raise Http404
if request.method == "POST":
form = PostForm(request.POST, request.FILES or None)
if form.is_valid():
post = form.save(commit=False)
post.user = request.user
post.published_date = timezone.now()
post.save()
messages.success(request, "Awesome! Your new post was successfully created!")
return redirect('post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
def post_edit(request, pk):
if not request.user.is_staff or not request.user.is_superuser:
raise Http404
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, request.FILES or None, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.user = request.user
post.published_date = timezone.now()
post.save()
messages.success(request, "Awesome! Your new post was successfully edited!")
return redirect('post_detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_edit.html', {'form': form})
def post_delete(request, pk):
if not request.user.is_staff or not request.user.is_superuser:
raise Http404
post = get_object_or_404(Post, pk=pk)
post.delete()
messages.success(request, "That post was successfully deleted!")
return redirect("post_list")
当我打开网页时,会显示blog_post错误。页面被卡住的那一行是我的post_list.html中的{%forpost-in-posts%}
{% extends 'blog/base.html' %}
{% block content %}
<div class='col-sm-7 col-sm-offset-3'>
<div class="row">
{% for post in posts %}
<div class="col-sm-12">
<div class="thumbnail">
{% if post.image %}
<img src="{{post.image.url}}" class='img-responsive img-rounded' alt="...">
{% endif %}
<div class="caption">
<h3><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }} <small>{{ post.published_date|timesince }} ago</small></a></h3>
<p><b>Author: {{ post.user }}</b></p>
<p>{{ post.text|linebreaks|truncatechars:300 }}</p>
<hr/>
<p><a href="{% url 'post_detail' pk=post.pk %}" class="btn btn-primary" role="button">View</a> </p>
</div>
</div>
</div>
{% endfor %}
</div>
<div class="pagination">
<span class="step-links">
{% if posts.has_previous %}
<a href="?page={{ posts.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ posts.number }} of {{ posts.paginator.num_pages }}.
</span>
{% if posts.has_next %}
<a href="?page={{ posts.next_page_number }}">next</a>
{% endif %}
</span>
</div>
</div>
{% endblock %}
这是我的post_list.html
{% extends 'blog/base.html' %}
{% block content %}
<div class='col-sm-7 col-sm-offset-3'>
<div class="row">
{% for post in posts %}
<div class="col-sm-12">
<div class="thumbnail">
{% if post.image %}
<img src="{{post.image.url}}" class='img-responsive img-rounded' alt="...">
{% endif %}
<div class="caption">
<h3><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }} <small>{{ post.published_date|timesince }} ago</small></a></h3>
<p><b>Author: {{ post.user }}</b></p>
<p>{{ post.text|linebreaks|truncatechars:300 }}</p>
<hr/>
<p><a href="{% url 'post_detail' pk=post.pk %}" class="btn btn-primary" role="button">View</a> </p>
</div>
</div>
</div>
{% endfor %}
</div>
<div class="pagination">
<span class="step-links">
{% if posts.has_previous %}
<a href="?page={{ posts.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ posts.number }} of {{ posts.paginator.num_pages }}.
</span>
{% if posts.has_next %}
<a href="?page={{ posts.next_page_number }}">next</a>
{% endif %}
</span>
</div>
</div>
{% endblock %}
{%extends'blog/base.html%}
{%block content%}
{posts%%中的post为%s}
{%if post.image%}
{%endif%}
作者:{{post.user}
{{post.text |换行符| truncatechars:300}
{%endfor%}
{%if posts.has_previous%}
{%endif%}
第{{posts.paginator.num_pages}页中的第{{posts.number}页。
{%if posts.has_next%}
{%endif%}
{%endblock%}
我已经删除了我的数据库,并用新的超级用户创建了一个新的数据库。当我从github推到Pythonywhere并运行迁移后重新加载页面时,仍然会收到此错误消息。
请告诉我如何修复此问题?您能否提供运行迁移时所遇到错误的完整堆栈跟踪?文件“/Home/aldigitron/my first blog/myvenv/lib/python3.4/site packages/django/db…”感谢您的回复。当我运行迁移时,我得到了类似于。。。。return Database.Cursor.execute(self,query,param)django.db.utils.integrityyerror:UNIQUE constraint失败:blog_post.slugHmm,此处的注释字段将其截断。也许您可以将其添加到原始帖子中?您可以给出运行迁移时所遇到错误的完整堆栈跟踪吗?文件“/Home/aldigitron/my first blog/myvenv/lib/python3.4/site packages/django/db…”感谢您的回复。当我运行迁移时,我得到了类似于。。。。return Database.Cursor.execute(self,query,param)django.db.utils.integrityyerror:UNIQUE constraint失败:blog_post.slugHmm,此处的注释字段将其截断。也许你可以把它添加到原来的帖子里?