Django-Nonrel AbstractUser权限

时间:2014-08-22 06:18:12

标签: python django google-app-engine permissions django-nonrel

我正在开展一个项目,我决定使用Google App Engine进行托管(Django-nonrel)。该网站将有多种类型的用户(继承自AbstractUser),我希望能够创建权限来控制用户可以看到/做的事情。由于本机Django权限不适用于Nonrel,我尝试使用permission_backend_nonrel,但只有在使用标准用户模型时它才有效。

我花了很多时间搜索其他人如何获得在Nonrel和AbstractUser上工作的权限,但没有找到任何东西。看起来我应该放弃获得工作权限,只需在用户模型中创建字段来复制权限。例如,如果我只想让一些用户能够更改他们的电子邮件地址,那么我可以这样做:

帐户\ models.py

class UserProfile(AbstractUser):

  address = models.CharField(max_length=40)
  can_change_email = models.BooleanField(default=True)

客户\ models.py

class CustomerProfile(UserProfile):

  company = models.BooleanField(max_length=40)

在这种情况下,我可以设置'can_change_email'并在UserProfile的视图中控制此行为。

我更喜欢使用内置的权限系统,但是没有想法。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我说你可能会更好地创建单独的一对一模型来表示用户之间的差异。 Django希望你有一个用户模型。

另一种选择是使用普通用户模型并创建反映用户之间想要进行的更改的代理模型。

第一种方式:

class CustomerProfile(models.Model):
    user = models.OneToOneField(User)

第二种方式:

class CustomerProfile(User):
    class Meta:
        proxy = True