Создание разрешения без использования БД означает, что вы не хотите использовать систему разрешений django.В этот момент я хотел бы спросить, почему вы не хотите его использовать?
Если можно использовать разрешение django sywstem, вы можете создать разрешение и проверить его, переопределив метод сохранения администратора ... Как:
в вашей 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()
При таком подходе вы получаете состояние связанной записи, прежде чем сохранить ееи проверьте наличие соответствующего разрешения.Если у пользователя нет необходимой перми.затем вы заменяете значение вашего поля на предыдущее.Если это новая запись, вы устанавливаете для этого поля любое значение, которое хотите.