2013-10-09 3 views
3

장고 보호자에 문제가 있습니다. 나는 뉴스 모델은 내 사용자 중 하나에 view_news 권한을 할당하려고 그런 Django 모델 사용 권한 올리기 DoesNotExist 오류

class News(models.Model): 
    title = models.CharField(_('Title'), max_length=255) 
    slug = models.SlugField(_('Slug'), unique_for_date='pub_date',) 

    objects = models.Manager() 
    featured = FeaturedNewsManager() 

    link = models.URLField(_('Link'), blank=True, null=True,) 

    class Meta: 
     permissions = (('view_news', _('view news'))) 

정의가 있고, 나는 다음과 같은 오류 얻을 :

>>> from guardian.shortcuts import assign_perm 
>>> g = Group.objects.latest('pk') 
>>> n = News.objects.get(pk=4) 
>>> assign_perm('news.view_news', g, n) 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "/home/roberto/.virtualenvs/ve_news/local/lib/python2.7/site-packages/guardian/shortcuts.py", line 93, in assign_perm 
    return model.objects.assign_perm(perm, group, obj) 
    File "/home/roberto/.virtualenvs/ve_news/local/lib/python2.7/site-packages/guardian/managers.py", line 90, in assign_perm 
    permission = Permission.objects.get(content_type=ctype, codename=perm) 
    File "/home/roberto/.virtualenvs/ve_news/local/lib/python2.7/site-packages/django/db/models/manager.py", line 143, in get 
    return self.get_query_set().get(*args, **kwargs) 
    File "/home/roberto/.virtualenvs/ve_news/local/lib/python2.7/site-packages/django/db/models/query.py", line 404, in get 
    self.model._meta.object_name) 
DoesNotExist: Permission matching query does not exist. 

을 내 응용 프로그램을 마이그레이션 시도했지만 그 아무튼를 내 문제를 해결하는 것 같지 않아. 어떤 도움을 주시겠습니까?

감사합니다.

python manage.py syncdb --all 

또는 새 권한

답변

5

시도하고 여기 트릭. 목록에 더 많은 권한을 추가하면 코드가 작동하기 시작했습니다.

permissions = (('view_news', _('view news'))) 

그것은해야한다 :

이 줄 오류있다

permissions = (('view_news', _('view news')),) 

참고 누락 된 쉼표.

내가 한 번 같은 함정에 빠진 : 권한 종류 (권한 코드, 권한 설명)

편집의 쌍입니다 튜플의 튜플이다. 그것을 피할 수있는 가장 좋은 방법은 단 한 권한에 따라 같은 코드를 구성 할 수 있습니다 : @foo 당사자가 언급

$ python manage.py syncdb 
+0

쿨 @sogeking로 그가 syncdb 당신을 기억

permissions = ( ('view_news', _('view news')), ) 

후, 감사 . 그것은 효과가있다! – sogeking

1

내가 syncdb하지 않았다 생각 (보호자 권한에 대한 마이그레이션의 자동 작성을 방지 남쪽 버그가있는)을 처리하기 위해 자신의 마이그레이션을합니다

+0

옙 죄송합니다. 이미 코드에 해당 쉼표를 추가했지만 여기에서 게시물을 편집하는 것을 잊었습니다. – sogeking

+0

하지만 그게 바로 오류의 원인 이었습니까? – Medeiros

+1

잘 기억한다면 syncdb와 @ foo-party를 다시 실행해야했습니다. 감사! :-) – sogeking