Я хочу определить некоторые пользовательские разрешения для абстрактного класса модели, которые затем будут унаследованы всеми дочерними классами, а вместо того, чтобы давать разрешениям имя общего объекта, которое может применяться к любому типу подкласса, я хотел бы по существу использовать verbose_name_plural
свойство дочерней модели как часть имен прав и описания (например, ('view_classname', 'Can view classname')
), эмуляция поведения Django по умолчанию.Как динамически назвать разрешения в классе абстрактной модели Django?
Итак, что я бы в надежде сделать бы что-то вроде этого (который не работает, так как verbose_name_plural
не определено в данном контексте):
class AbstractModel(models.Model):
class Meta:
abstract = True
permissions = (
(u'view_%ss' % verbose_name_plural, u'Can view %s' % verbose_name_plural),
)
(Эта проблема также описана в http://code.djangoproject.com/ticket/10686 , который включает в себя патч, который реализует динамическую замену %(class)s
в определениях разрешений, но этот патч никогда не принимался, и моя производственная среда не позволяет исправлять Django.)
Это все еще проблема, но смутно позитивные новости для более свежих посетителей этого вопроса состоят в том, что этот вопрос получил некоторую работу над ним 6 месяцев назад, но пока не сделал его релизом (и мы на 1.10 .5 на момент написания). https://github.com/django/django/pull/6861#issuecomment-240427426 –