以下是我的模特:
class A(models.Model):
owner = models.ForeignKey(User, null=False)
a_name= models.CharField(max_length=200, null=False, unique=True)
class B(models.Model):
owner = models.ForeignKey(User)
b_name= models.CharField(max_length=100, null=False)
class C(models.Model):
a= models.OneToOneField(
A,
on_delete=models.CASCADE,
null=False,
unique=True,
)
b= models.OneToOneField(
B,
on_delete=models.CASCADE,
null=False,
unique=True,
)
class D(models.Model):
c= models.OneToOneField(C,
on_delete=models.CASCADE,
null=False,
unique=True,
)
d1 = models.IntegerField(null=False, default=1)
我试图覆盖ListView泛型类中的查询集,以获取模型中所有对象的列表' D'所有者'在模特' A'在当前登录的用户中。我无法为查询编写过滤器。
D.objects.filter(self.c__a__owner==self.request.user)
但我收到的错误是:
'MyListView' object has no attribute 'c__a__owner'
请指导我如何实现这一目标。
感谢。
答案 0 :(得分:1)
您的查询不应该self
。此外,您在filter
方法中使用关键字分配而不是比较。它应该像:
D.objects.filter(c__a__owner=self.request.user)