我有一個模型定製,水木清華這樣的:過濾經理的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
也許你可以看看他們是如何實現這個功能?