Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django中按self.request.user筛选对象列表_Python_Django_Class_View_Request - Fatal编程技术网

Python Django中按self.request.user筛选对象列表

Python Django中按self.request.user筛选对象列表,python,django,class,view,request,Python,Django,Class,View,Request,我无法让它工作: class MyView(generic.ListView): context_object_name = 'my-model-list' template_name = 'my_models.html' def get_queryset(self): return MyModel.objects.filter(user=self.request.user) 我也试过了 return MyModel.objects.filter(us

我无法让它工作:

class MyView(generic.ListView):
    context_object_name = 'my-model-list'
    template_name = 'my_models.html'

    def get_queryset(self):
        return MyModel.objects.filter(user=self.request.user)
我也试过了

return MyModel.objects.filter(user=User.objects.filter(name=self.request.user))
似乎self.request.user正在返回一个名称。我得到的错误是

Cannot query "a": Must be "User" instance.
用户的名字是“a”

我的模型是

from .models import User

class MyModel(models.Model):
    user = models.ForeignKey(User)
有人能帮我吗


提前感谢。

您以错误的方式继承了用户模型。
使用django.contrib.auth.models导入用户的

所示代码是正确的。问题是您正在定义自己的用户类,而Django在发出请求时不知道如何处理它

最简单的方法是使用Django用户。如果坚持使用自己的用户类,则需要修改该类以正确继承Django用户和其他一些内容(在该类上存在一些堆栈溢出)

在您的./MyModel/models.py中,您将希望导入这样的用户:

from django.contrib.auth.models import User
保持其他模型和视图不变(除非它们也导入用户)

您可能还必须更新设置文件,使其看起来像这样(这可能不完全正确):

进行这些更改后,不要忘记迁移数据库

可以使用self.request.user.mymodel\u set.all()获取当前用户的所有查询


print(type(self.request.user))
print(self.request.user)
会给你什么输出?我得到的输出可能是重复的:
a
我也不认为这是重复的,因为答案是代码不能在类级别上,我的代码不在类级别。如何在设置中导入用户和定义身份验证?我的代码看起来与您的工作相同,并且我的类型输出是
django.contrib.auth.models.User
。通过这种方式从django.contrib.auth.models导入用户
,然后再次尝试。我通过创建我自己的单独用户类Person修复了这个问题,该类名为Person,与用户使用一对一关系。谢谢大家的帮助<从Django.Curb.Audio.Model导入用户类人(model .model):用户=模型。OneToOneField(用户,OnLead=Model,Cype)<代码>只有答案是无用的,考虑编辑你的答案来解释你的代码所做的,以及它是如何与问题相关的。
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    )
from .models import User

class MyModel(models.Model):
    user = models.ForeignKey(User)


class MyView(generic.ListView):
    context_object_name = 'my-model-list'
    template_name = 'my_models.html'

    def get_queryset(self):
        return self.request.user.mymodel_set.all()