1
現在我有這樣自定義創建權限的
class FileCategory(models.Model):
file_type = models.CharField(_('type'), max_length=128)
def __unicode__(self):
return self.file_type
class Doc(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
file_category = models.ForeignKey('FileCategory', null=True)
file = models.FileField(upload_to='documents/',
null=True, blank=True)
class Meta:
permissions = (("upload_file", "upload file"),
("delete_file", "delete file"),
("download_file", "download file"),
("access_file", "access file"),
)
models.py現在我想添加的權限,每FileCategory
表 例如,如果我有filecategory numm,dumm和SUMM 我想自動有權("access_file_numm","access_file_summ","access_file_dumm",)
我試圖做這樣一個解決方案:
permissions = (bla,bla,bla,
)+\
("access_file_%s" (type.__str__() for type in FileCategory.objects.all()),
"access %s"(type.__str__() for type in FileCategory.objects.all()))
而且知道我是否想將它們遷移到數據庫
解決方法:
爲Moemn答案與編輯:
def save(self, *args, **kwargs):
super(FileCategory, self).save(*args, **kwargs)
Permission.objects.get_or_create(content_type=ContentType.objects.get_for_model(Doc),
codename="access_type_%s" % self.file_type,
name="access type %s" % self.file_type)
非常感謝@ Mo'men 它的工作,我用你的答案(編輯)更新了問題, –