我的car_store应用中有Car
模型。
class Car(models.Model):
...
class Meta:
permissions = (('can_buy', 'User can buy this car'),)
现在我的帐户应用中有一个自定义的User
模型:
from django.db import models as _models
from django.contrib.auth.models import AbstractBaseUser
class User(AbstractBaseUser):
email = models.EmailField()
....
def has_perms(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
以后我会简单地使用PermissionRequiredMixin作为我的观点:
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic import ListView
class CarListView(PermissionRequiredMixin, ListView):
permission_required = ('car.can_buy',)
问题是 django不提供任何类型的self.set_perm(self, perm)
或set_perm(some_user, perm)
?如果没有,实现它的最简单方法是什么?
我应该简单地做这样的事吗?
class User(AbstractBaseUser):
perms = []
def set_perm(self, perm):
self.perms.append(perm)
def has_perm(self, perm):
return self.perms.count(perm)
我找不到任何描述如何为用户设置烫发的内容(第三方django-guardian - assign_perm()除外)。来自django docs的Full Example都没有谈到如何为用户设置烫发。甚至有Answer,但他没有谈到为用户设置烫发,而是如何检查烫发。