2013-11-15 3 views
4

두 개의 그룹을 추가하고 Django 프로젝트에 권한을 부여하려고합니다. 하지만 오류가 계속 발생합니다 :django 사용 권한을 만들 때 오류 : ContentType 일치하는 쿼리가 없습니다.

일치하는 컨텐츠 유형 일치하는 쿼리가 존재하지 않습니다.

나는 실행하고 있습니다 : 장고 1.5.4 파이썬 2.7.3을 사우스 0.8.2 PostreSQL 9.3

여기 내 코드입니다 :

import django 
from django.contrib.auth.models import Group, Permission 
from django.contrib.contenttypes.models import ContentType 

from .models import Flavor 

def add_groups(): 
    # Create User Groups 
    special_users = Group(name='Special Users') 
    special_users.save() 
    really_special_users = Group(name='Super Special Users') 
    really_special_users.save() 

def add_permissions(): 
    # Define a View permission for the 1st group, and a View/Modify permission for the 2nd group 
    somemodel_ct = ContentType.objects.get(app_label='flavors', model='flavors_flavor') 
    can_view = Permission(name='Can View', codename='can_view_something', content_type=somemodel_ct) 
    can_view.save() 
    can_modify = Permission(name='Can Modify', codename='can_modify_something', content_type=somemodel_ct) 
    can_modify.save() 

def give_perm_to_groups(): 
    # Associate these two permissions now with a Group 
    special_users.permissions.add(can_view) 
    really_special_users.permissions = [can_view, can_modify] 

내가 add_groups를 실행할 수 있습니다() 잘. 현재 작동중인 것은 add_permissions()입니다. 나는 이것이 Postgres의 조명기와 관련이 있다고 생각하지만 추가하는 방법이나 정확한 문제인지 확실하지 않다.

감사

다음

전체 오류 추적 있습니다 :

>>> add_permissions() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/Users/Yuki_Aaron/Documents/djcode/demoproject/flavors/groups.py", line 16, in add_permissions 
    somemodel_ct = ContentType.objects.get(app_label='flavors', model='flavors_flavor') 
    File "/Users/Yuki_Aaron/Documents/virtualenvs/django1.5/lib/python2.7/site-packages/django/db/models/manager.py", line 143, in get 
    return self.get_query_set().get(*args, **kwargs) 
    File "/Users/Yuki_Aaron/Documents/virtualenvs/django1.5/lib/python2.7/site-packages/django/db/models/query.py", line 404, in get 
    self.model._meta.object_name) 
DoesNotExist: ContentType matching query does not exist. 
+0

당신은'flavors_flavor' 또는'flavor'라고 불리는 모델입니까? – karthikr

답변

1

내가해야 할 일을했을 우선 변경했다 somemodel_ct에 :

somemodel_ct = ContentType.objects.get(app_label='flavors', model='flavor') 

두 번째 것은 오류가 나는 순서대로, 내 모델에 권한을 추가 할 필요가 있다는 사실 때문이었다이었다 django.contrib.auth.models .... PermissionGroup에 대해 모델에서 정의 된 사용 권한을 조회 한 다음 ContentType과 다시 관련시킬 수 있습니다.

class Flavor(models.Model): 
... 
    class Meta: 
      permissions = (
       ('can_view', 'Can View'), 
       ('can_modify', 'Can Modify'), 
      ) 

이 방법은, 내 Flavor 모델은 Permission 테이블의 권한을 조회 할 수 있습니다 : 여기가 작동하도록하기 위해 내 models.py에 추가 된 코드입니다. 그게 내 Flavor 모델에 class Meta: permissions을 포함시키지 않았기 때문에 ContentType: no matching query이라고 말한 것입니다.

도움 주셔서 감사합니다.

2

변경이 라인 :

somemodel_ct = ContentType.objects.get(app_label='flavors', model='flavors_flavor') 

의 :

somemodel_ct = ContentType.objects.get(app_label='flavors', model='flavor') 

그것은을 지정할 때 문제가 것입니다 모델

+0

[django docs] (https://docs.djangoproject.com/ko/1.6/ref/contrib/contenttypes/#the-contenttype-model) : ** ContentType 모델 필드 -> 모델 클래스의 이름 ** – juliocesar

+0

"Flavor"로 변경했지만 여전히 작동하지 않았습니다. 여기에 새로운 역 추적이있다. 어떤 제안 : –

+0

>>> add_permissions() 역 추적 (가장 최근 통화 최종) : 파일 "", 라인 1, 파일 "/Users/Yuki_Aaron/Documents/djcode/demoproject/flavors/groups.py"에서 , 16 행, add_permissions somemodel_ct = ContentType.objects.get (app_label = '맛, 모델 ='맛 ') 파일 "/Users/Yuki_Aaron/Documents/virtualenvs/django1.5/lib/python2.7/site -packages/django/db/models/manager.py ", 줄 143, get get self.get_query_set().get (* args, ** kwargs) 파일 DoesNotExist : ContentType 일치하는 쿼리가 존재하지 않습니다. –

관련 문제