按用户列出的Django筛选器列表视图

按用户列出的Django筛选器列表视图,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我的视图中有@required\u login装饰器,但我需要列表视图仅显示与当前登录用户相关的对象 我正在努力: class NdaList(ListView): form_class = NonDisclosureForm template_name = 'nda/nda_list.html' def get_queryset(self): return NonDisclosure.objects.filter(user=self.request.u

我的视图中有
@required\u login
装饰器,但我需要
列表视图
仅显示与当前登录用户相关的对象

我正在努力:

class NdaList(ListView):
    form_class = NonDisclosureForm
    template_name = 'nda/nda_list.html'

    def get_queryset(self):
        return NonDisclosure.objects.filter(user=self.request.user)
但它给了我一个
无法查询“charles”:必须是“Profile”实例。

我的模型:

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, related_name="profile", verbose_name="user")
...

class NonDisclosure(Timestamp):
    user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="nda", verbose_name="user")
...
我已经尝试了我能做的一切,但由于我对Django的知识仍然有限,我已经没有想法了。感谢您抽出时间。

快速解决方案:

        return NonDisclosure.objects.filter(user__user=self.request.user)
其他:

我认为最好更改
非公开
中的
用户
字段名,因为实际上该字段指向的是
配置文件
实例,而不是
用户

class NonDisclosure(Timestamp):
    profile = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="nda", verbose_name="user")
您的查询语句也将更改为:

return NonDisclosure.objects.filter(profile__user=self.request.user)

post your settings.py fileBut user属于
设置类型。AUTH_user_MODEL
@AvinashRaj
AUTH_user_MODEL
也是一个类似用户的模型。毕竟,附加部分只是为了避免误导。耶,您必须传递AUTH_USER_模型的实例而不是字符串。感谢你们两位花时间讨论这一点……我简直不敢相信我在这上面浪费了多少时间:)将我的
保密
用户
更改为
配置文件
-也很有意义,因为用户是在
配置文件中设置的。谢谢你的建议。