Как назначить объекту разрешение с помощью override save () в классе модели? - PullRequest
1 голос
/ 06 июля 2019

Я хочу, чтобы у главы модели было два статуса.Один является общедоступным, другой - только для разрешенной группы.

Поэтому, я думаю, мне нужно разрешение объекта для применения на практике.Я также надеюсь, что смогу назначить разрешение всякий раз, когда создаю или редактирую объект

class Chapter(models.Model):
    chapter = models.PositiveSmallIntegerField()
    title = models.CharField(max_length=200, blank=True)
    content = models.TextField()
    book = models.ForeignKey('book', on_delete=models.CASCADE, null=True)
    AVAILABLE_STATUS = (
        ('p', 'public'),
        ('l', 'login user only')
    )
    status = models.CharField(
        max_length = 1,
        choices = AVAILABLE_STATUS,
        default = 'p',
        help_text='Chapter availability',
    )
    class Meta:
        ordering = ['chapter']
        unique_together = (("book", "chapter"),)
        permissions = (('author', "Can Create ,Edit , Delete"),
                   ('view_private_chapter',"Can View Private Chapter")
                  )
    def save(self, *args, **kwargs):
        if self.status=='l':
            group = Group.objects.get_or_create(name='private_chap_viewer')
            assign_perm('view_private_chapter', group, self)
        super().save(*args,**kwargs)

Но я получаю сообщение об ошибке: не все аргументы преобразуются во время форматирования строки, когда я пытаюсь изменить статус главы в admin.Как мне использовать assign_perm?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...