首页 > 解决方案 > DoesNotExist at /home/ 好友匹配查询不存在

问题描述

from home.models import Post,Friend
from django.contrib.auth.models import User


class HomeView(TemplateView):
    template_name='home/home.html'

    def get(self,request):
        form=HomeForm()
        posts=Post.objects.all().order_by('-created')
        users=User.objects.exclude(id=request.user.id)

        friend=Friend.objects.get(current_user=request.user)
        friends=friend.users.all()

标签: pythondjango

解决方案


好友匹配查询不存在

此错误是因为您的查询为空。.get()如果查询为空或包含多个结果,将返回错误。.filter()在适当的条件下使用。

请参阅文档的这一部分

.get()直接返回一个对象时,filter()返回一个查询集,因此您必须检查查询集是否为空,然后使用queryset.first()or queryset[0]

另一种解决方案是将您包装.get()在 try/except 块中:

try:
    friend=Friend.objects.get(current_user=request.user)
except:
    # No Friend was found for this current_user
    # Do something

推荐阅读