Создание завивку без использования БД означает, что вы не хотите использовать систему разрешения Джанго. В этот момент я бы спросил, почему вы не хотите его использовать?
Если это нормально использовать Джанго разрешения sywstem, вы можете создать разрешение и проверить его overrriding админ сохранить метод ... Как:
в вашем models.py
class SomeModel(Model):
your_spec_field = FieldType(...)
class Meta:
permissions = (
("some_perm", u"A name for your default permission"),
)
В вашем связанном с admin.py
class SomeModelAdmin(ModelAdmin):
def save_model(self, request, obj, form, change):
if change:
curr_value = SomeModel.objects.get(pk=obj.id)
if not request.user.has_perm('<your_app>.some_perm'):
obj.your_spec_field = curr_value.your_spec_field
else:
if not request.user.has_perm('<your_app>.some_perm')
obj.your_spec_field = '' # or the default value according to your field type
obj.save()
В этом подходе вы получите состояние связанной записи, прежде чем сохранять его и проверить наличие соответствующего разрешения. Если у пользователя нет требуемой переменной. то вы заменяете значение своего поля на предыдущее. Если это новая запись, вы установите это поле для любого значения, которое вы хотите.
Вы имеете в виду '/ admin/auth/group/add /'? –
спасибо, но мне нужно создать специальное разрешение. Таким образом, только пользователи с таким разрешением могут изменять конкретное поле модели. Мне просто нужно сделать одно поле «readonly» для некоторых пользователей. –
Вы можете определить пользовательское разрешение, например 'can_change_xy', и явно проверить это разрешение с помощью' user.has_perm() 'в вашей функции просмотра. Насколько мне известно, универсального решения для отдельных полевых разрешений нет. См. Http://docs.djangoproject.com/en/dev/topics/auth/#custom-permissions и http://docs.djangoproject.com/ru/dev/topics/auth/#django.contrib.auth.models. .User.has_perm. –