django-guardian 関数 get_objects_for_user の動作を理解できません。グループ オブジェクトの権限を割り当てていますが、get_objects_for_user にはそれらの権限がないようです。
>>> u = User.objects.get(username='angus')
>>> u.has_perm('news.change_news', n)
True
>>> from guardian.shortcuts import get_objects_for_user
>>> get_objects_for_user(u, (u'news.change_news', ))
[]
>>> get_objects_for_user(u, ('change_news'), klass=News)
[]
ただし、ドキュメントは非常に明確に見えます。
get_objects_for_user: (user, perms, klass=None, use_groups=True, any_perm=False)
Returns queryset of objects for which a given ``user`` has *all*
permissions present at ``perms``.
どこからデバッグを開始すればよいかさえわかりません。助言がありますか?
アップデート:
私のモデルは次のように定義されています。
class News(models.Model):
departments = models.ManyToManyField(Department, blank=True, related_name='news', through='NewsDepartmentMembership')
research_groups = models.ManyToManyField(Group, blank=True, related_name='news', through='NewsGroupMembership')
people_involved = models.ManyToManyField(Person, blank=True, related_name='news')
related_news = models.ManyToManyField('News', blank=True)
title = models.CharField(_('Title'), max_length=255)
slug = models.SlugField(_('Slug'), unique_for_date='pub_date',)
excerpt = models.TextField(_('Excerpt'), blank=True)
content = models.TextField(_('Content'), blank=True)
is_published = models.BooleanField(_('Published'), default=False)
pub_date = models.DateTimeField(_('Publication date'), default=datetime.datetime.now)
is_feat = models.BooleanField(_('Featured'), default=False)
published = PublishedNewsManager()
objects = models.Manager()
featured = FeaturedNewsManager()