0

想象一下我有以下模型

class Post(models.Model):
    name = models.CharField(max_length=20)
    body = models.TextField()

    class Meta:
        permissions = permission_generator()

我想要的是permission_generator()生成元组

(
    ('create_pet', 'create post'),
    ('read_pet', 'read post'),
    ('update_pet', 'update post'),
    ('delete_post', 'delete post'),
)

在某种程度上,我可以在所有模型中重复使用,而无需在每次定义新模型时重复自己。

如何实施这样的事情?

4

2 回答 2

0

我刚刚发现 django 默认添加

  • add_modelname
  • 更改型号名称
  • 删除模型名

https://docs.djangoproject.com/en/dev/topics/auth/default/#default-permissions

于 2018-03-20T21:02:45.760 回答
0

您可以创建抽象模型并继承它。例如:

class BaseModel(models.Model):
    class Meta:
        abstract=True
        permissions = (
            ('create', 'Create'),
            ('read', 'Read'),
            ('update', 'Update'),
            ('delete', 'Delete')
        )

class Cat(BaseModel):
    name = models.CharField()

当您继承该模型并进行数据迁移时,这些权限将添加到django_permissions表中,如下所示:

app | cat | Permission name

于 2018-03-20T21:05:21.007 回答