匹配的查询不存在.Django错误



这是我的项目代码,我刚刚收到这个错误,我试图找出它,但我没有得到,

Django错误:

DoesNotExist at/save_post/

配置文件匹配查询不存在。

views.py,第75行,在save_post中form.authore=Profile.objects.get(user=request.user(

视图.py

@login_required
def save_post(request):
if request.method == "POST":
form = Post(content=request.POST['content'])
form.authore = Profile.objects.get(user=request.user)
form.save()
elif request.method == "PUT":
data = json.loads(request.body)
post_id = int(data["post_id"])
new_content = data["new_content"]
post = Post.objects.filter(id=post_id).first()
if post.authore.user != request.user:
return HttpResponse(status=401)
post.content = new_content
post.save()
return JsonResponse({
"result": True
}, status=200)
else:
return JsonResponse({
"error": "post not found"
}, status=400)
return index(request)

型号.py

class User(AbstractUser):
pass

class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)

class Post(models.Model):
content = models.TextField()
timestamp = models.DateTimeField(default=timezone.now)
authore = models.ForeignKey(Profile, on_delete=models.CASCADE)
likes = models.PositiveIntegerField(default=0, blank=True, null=True)
def serialize(self):
return {
"id": self.id,
"content": self.content,
"timestamp": self.timestamp.strftime("%b %#d %Y, %#I:%M %p"),
"authore": self.authore.id,
"username": self.authore.user.username,
"likes": self.likes.count(),
}

这似乎是正确的,但您已经使用了没有配置文件的用户所以这里是我的笔记:

您可以使用get_object_or_404,如果未找到配置文件,则会返回未找到

from django.shortcuts import  get_object_or_404
form.authore =  get_object_or_404(Profile, user=request.user)

当用户创建时,必须在此处创建逻辑配置文件,因此用户没有配置文件是逻辑配置文件

创建用户配置文件时最好使用one_to_one关系,因为每个用户只有一个配置文件,反之亦然

要使其正确工作,请参阅此处https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

转到使用前一个链接中的一对一链接扩展用户模型

字段执行本教程,当用户创建时,用户配置文件将自动创建

当您尝试打开两个窗口并使用两个不同的配置文件登录时,也会发生这种情况。一切都很好,除非你使用两个帐户中的一个尝试某个功能,否则会出现问题,因为第二个用户与第一个用户同时连接。解决方案是注销两个帐户,然后只使用其中一个帐户登录。

相关内容

最新更新