Теперь у меня есть models.py как этотСоздания пользовательских разрешений в Джанго модели
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"),
)
Теперь я хочу, чтобы добавить разрешения для каждого FileCategory
таблицы Например если у меня есть filecategory NUMm, манекен и Суммы Я хочу автоматически имеет разрешение ("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 Это сработало, и я обновил вопрос с вашего ответа (отредактирован) –