посмотри на следующую мете реализации, он добавляет разрешений на чтение всех модели Джанго, которые устанавливают MyModelMeta класса будет Thier метакласса:
class MyModelMeta(ModelBase):
# add a read permission to each MyModelMeta model
def __new__(cls, name, bases, attrs):
Meta = None
if "Meta" in attrs:
Meta = attrs.get("Meta")
if hasattr(Meta, "abstract") and getattr(Meta, "abstract"):
# if the class is abstract, don't create permissions for it, just return the class object
return super(MyModelMeta, cls).__new__(cls, name, bases, attrs)
if not Meta:
# create a new Meta Class
Meta = type('Meta', (object,), {})
setattr(Meta, 'permissions',(("read_%s"%name.lower(), "Can read %s"%name.lower()),))
attrs['Meta'] = Meta
return super(MyModelMeta, cls).__new__(cls, name, bases, attrs)
создают абстрактные модели Джанго и установить мету-класс memeber к MyModelMeta:
class MyAbstractModel(models.Model):
__metaclass__ = MyModelMeta
class Meta:
abstract=True
сейчас, создать нормальную модель Джанго, как так:
class SomeModel(MyAbstractModel):
someFieldName = models.CharField(max_length=256, db_index=True)
это сгенерирует разрешения на добавление/изменение/удаление_somemodel по умолчанию, а также добавит новое разрешение read_somemodel.
, если вы также используете юг, использовать для генерации дополнительных разрешений:
from django.db.models import get_app, get_models
from django.contrib.auth.management import create_permissions
create_permissions(get_app(app), get_models(), 2 if settings.DEBUG else 0)
«не работает» означает, что именно? вы можете уточнить? – mawimawi
См. Редактирование. и я не могу найти какую-либо документацию, если это должно работать или нет ... –