Django 如何通过模型访问管理器

Django 如何通过模型访问管理器,django,many-to-many,django-managers,Django,Many To Many,Django Managers,我已经为直通模型创建了一个管理器,希望在访问多对多对象时使用它 class Contact(models.Model): first_name = models.CharField(max_length=50, null=True, blank=True) last_name = models.CharField(max_length=50, null=True, blank=True) email = models.EmailField() class Contact

我已经为直通模型创建了一个管理器,希望在访问多对多对象时使用它

class Contact(models.Model):
    first_name = models.CharField(max_length=50, null=True, blank=True)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    email = models.EmailField()

class ContactList(models.Model): 
    name = models.CharField(max_length=50)
    contacts = models.ManyToManyField(
        Contact,
        through='ContactListEntry',
        blank=True,
    )


class ContactListEntry(models.Model):
    contact_list = models.ForeignKey(ContactList, related_name='contact_list_entries')
    contact = models.ForeignKey(Contact, related_name='contact_list_entries')
    removed = models.BooleanField(default=False)  # Used to avoid re-importing removed entries.

    # Managers.
    objects = ContactListEntryManager()
经理:

class ContactListEntryManager(Manager):
    def active(self):
        return self.get_queryset().exclude(removed=True)
是否有任何方法可以通过该字段访问经理

这是:

class ContactListView(DetailView):
    model = ContactList
    template_name = 'contacts/contact_list.html'
    context_object_name = 'contact_list'

    def get_context_data(self, **kwargs):
        ctx = super(ContactListView, self).get_context_data(**kwargs)
        contact_list_entries = self.object.contacts.active()  # <-- THIS HERE.
        ctx.update({
            "contact_list_entries": contact_list_entries,
        })
        return ctx
class ContactListView(详细视图):
型号=联系人列表
模板名称='contacts/contact\u list.html'
上下文\对象\名称='联系人\列表'
def获取上下文数据(自身,**kwargs):
ctx=super(ContactListView,self)。获取上下文数据(**kwargs)

contact_list_entries=self.object.contacts.active()#您尝试过这样做吗<代码>联系人列表项=self.object.objects.active()
。如果要返回所有活动的联系人,为什么不执行
contact\u list\u entries=ContactList.objects.active()
contact\u list\u entries=self.object.objects.active()
操作:“无法通过联系人列表实例访问管理器”。我需要contact对象,因为它们作为qs进入tables2实例。显然,我可以做一些类似于
[entry.contact for entry in ContactList.objects.active()]
的事情,但我认为更好的方法是使用一个管理器,因为这是一个标准情况,并且使用了很多次。