我有一个模型定制,水木清华这样的:过滤经理的Django模型,通过用户
class Action(models.Model):
def can_be_applied(self, user):
#whatever
return True
,我想重写它的默认管理器。但我不知道如何将当前用户变量传递给经理,所以我必须做的水木清华这样的:
我如何通过只覆盖经理摆脱它?
谢谢。
我有一个模型定制,水木清华这样的:过滤经理的Django模型,通过用户
class Action(models.Model):
def can_be_applied(self, user):
#whatever
return True
,我想重写它的默认管理器。但我不知道如何将当前用户变量传递给经理,所以我必须做的水木清华这样的:
我如何通过只覆盖经理摆脱它?
谢谢。
由于管理者只是方法,你可以把你想要有什么:
class ActionManager(models.Manager):
def applied(self, user):
return [x for x in self.get_query_set().all() if x.can_be_applied(user)]
Action.objects.applied(someuser)
虽然不是很有效,它的工作。
这看起来很像是什么在django.contrib.auth
已经实施:http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.models.User.get_all_permissions
也许你可以看看他们是如何实现这个功能?