Python 在get\u object\u或\u 404中isnull=True的Django queryset

Python 在get\u object\u或\u 404中isnull=True的Django queryset,python,django,Python,Django,我在posts表中有2条记录,表中的一行评级为NULL,另一行评级为2,两者都有相同的用户id,比如5 我首先实现这一点 视图.py class Rating(TemplateView): template_name = 'base/rating.html' def get(self,request,slug,*args,**kwargs): user_id = request.user.id post = get_object_or_404(Po

我在posts表中有2条记录,表中的一行评级为NULL,另一行评级为2,两者都有相同的用户id,比如5

我首先实现这一点

视图.py

class Rating(TemplateView):
    template_name = 'base/rating.html'
    def get(self,request,slug,*args,**kwargs):
        user_id = request.user.id
        post = get_object_or_404(Post.objects.filter(user_id=user_id,rating__isnull=True))
        return render(request,self.template_name)
url(r'^post/addRating/(?P<slug>.+?)/$',views.Rating.as_view(),name="post_rating"),
url.py

class Rating(TemplateView):
    template_name = 'base/rating.html'
    def get(self,request,slug,*args,**kwargs):
        user_id = request.user.id
        post = get_object_or_404(Post.objects.filter(user_id=user_id,rating__isnull=True))
        return render(request,self.template_name)
url(r'^post/addRating/(?P<slug>.+?)/$',views.Rating.as_view(),name="post_rating"),
url(r'^post/addRating/(?P.+?)/$),views.Rating.as_view(),name=“post_Rating”),
因此,如果评级列为 非空

因此,评级为null的第一条记录应该返回404页,但它不是,第二条记录正确显示


有人能帮我修一下吗?

你需要仔细阅读django文档,上面的代码不正确。 要使用get_object_或_404,您必须编写类似(来自django)的代码

为了方便起见,你应该写以下内容:

posts = Post.objects.filter(user_id=user_id,rating__isnull=True)
post = posts and posts[0]

如果你描述的是正确的,那么这两个都不会显示404页面;一个会得到一个职位,另一个会得到另一个。因此,您的数据可能不是您所想的,或者
user\u id
持有错误的值。@RemcoGerlich因此让我们忽略第二个条件,让我们关注第一个条件,但这两个条件仍然会显示出来。user_id也是sameget_object_或_404不可能同时返回二者,它只返回一个或多个404。你没有向我们展示你是如何展示东西的。@RemcoGerlich可能是我错了,我试图通过放置我正在尝试的东西来获得正确的东西。你能纠正它吗?我看到的只是那一行,它应该得到评级为空的帖子。您可能应该在问题中包括视图的其余部分、URL模式、尝试的URL及其结果。这是错误的,您链接到的文档声明获取\u object\u或\u 404的第一个参数也可以是queryset,他就是这么做的。其他参数可能是空的,为什么不呢?