Я пытаюсь настроить некоторые пользовательские разрешения для приложения Django, но не могу заставить его работать. Официальная документация немного скудна и не упоминает (по крайней мере, что я могу найти), как на самом деле установить разрешение? Основываясь на нескольких сторонних уроках, которые я нашел, я расширил класс User, и, похоже, он работает нормально:
from django.db import models
from django.contrib.auth.models import User,UserManager
class CustomUser(User):
custom_field = models.CharField(max_length=250)
objects = UserManager()
class Meta:
permissions = (
('is_custom','Has a Custom Permission'),
)
Когда я пытаюсь установить разрешение, оно не работает:
>>> from project.custauth.models import CustomUser
>>> from django.contrib.auth.models import User, Permission
>>> user = CustomUser.objects.get(username='new.user')
>>> user
<CustomUser: new.user>
>>> custom_permission = Permission.objects.get(codename="is_custom")
>>> custom_permission
<Permission: custauth | custom user | Has a Custom Permission>
>>> custom_permission.save()
>>> user.user_permissions.add(custom_permission)
>>> user.save()
>>> user.has_perm(custom_permission)
False
>>> user.get_all_permissions()
set([])
Есть идеи, что я делаю не так? Я использую Django 1.2.1 с Python 2.4.3. Весь вклад оценен ...