用于多级Foreignkey引用的Django查询集

时间:2017-11-15 12:45:51

标签: django django-queryset

以下是我的模特:

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'

请指导我如何实现这一目标。

感谢。

1 个答案:

答案 0 :(得分:1)

您的查询不应该self。此外,您在filter方法中使用关键字分配而不是比较。它应该像:

D.objects.filter(c__a__owner=self.request.user)