0

我正在尝试制作一个未使用/未选择对象的新列表,以便我可以在模板中显示使用的内容和未使用的内容。

我的模型:

class Benefit(models.Model):
    name = models.CharField(max_length=200)

class Profile(models.Model):
    benefits = models.ManyToManyField(Benefit, blank=True, null=True, related_name="used_benefit")

我的观点:

class Profile(TemplateView):
    template_name = "profile/benefits.html"

    def get_context_data(self, **kwargs):
            context = super(Profile, self).get_context_data(**kwargs)
            context['unused_benefits'] = Profile.objects.exclude(pk__in=Profile.benefits.all())
            return context

这是我没有得到的东西,因为我收到了这个错误:'ReverseManyRelatedObjectsDescriptor' object has no attribute 'all'

我试过没有all,但后来我得到了错误'ReverseManyRelatedObjectsDescriptor' object is not itterable

有人看到我做错了什么吗?

4

1 回答 1

0

你在做什么根本没有任何意义。您无法访问benefits.all()Profile 类本身,只能访问它的实例。Profile.benefits.all()甚至意味着什么?

即使这确实有效,也会为您提供一份福利清单。然后你怎么能用它来排除 pk 的配置文件?然后,第三,个人资料查询将如何帮助您获得未使用福利的列表?

如果您只是尝试获取没有附加配置文件的福利列表,那么您实际上需要查询福利模型,而不是配置文件:

unused_benefits = Benefits.objects.filter(profile__isnull=True)
于 2013-10-30T11:21:16.633 回答