Django:多种用户类型系统和自定义方法

时间:2014-04-16 08:28:06

标签: python django subclass

我正在开发一个django应用程序中的用户组织,该应用程序要求一个用户类型创建任务(Creator),另一个(Asignee)被分配任务。创作者无法将任务分配给其他创作者,而且受让人无法创建任务。

这两种模型都需要自己的自定义方法。他们都将使用相同的auth系统。但是,两者之间的区分很重要。

我当前的解决方案只使用一对一的用户个人资料类和类似以下的功能来检查成员资格:

def is_creator(user):
    try:
         if user.creator:
             return True
     except ObjectDoesNotExist:
         return False

虽然这有效,但有点单调乏味。

我想知道是否有另一种方法来实现这种类型的结构,方法是通过一个公共的配置文件类对所有的usertypes进行子类化,这样我就可以这样检查成员资格:

if request.user.profile.is_creator():
        pass

请记住,造物主和受让人都有完全不同的领域。

1 个答案:

答案 0 :(得分:0)

您可以在公共配置文件中定义user_type字段,并在同一个类中添加方法:

@property
def is_creator(self):
    """Find out if this is a Creator user"""
    if self.user_type == "creator": 
        return True
    else:
        return False