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