Dynamic Readonly Fields
If you have a model field that should be read-only based on a user's permission, you can use the get_readonly_fields
method in the model admin.

Instructions
Create permissions
superapp/apps/<app_name>/models.py
from django_superapp.helpers import BaseModel
class SampleModel(BaseModel):
class Meta:
permissions = [
("can_edit_erp_id", "Can edit ERP ID"),
]
Configure model admin
superapp/apps/<app_name>/admin.py
import unfold
from django.contrib import admin
from django_superapp.helpers import SuperAppModelAdmin
from django_superapp.sites import superapp_admin_site
from .models import SampleModel
@admin.register(SampleModel, site=superapp_admin_site)
class SampleModelAdmin(SuperAppModelAdmin):
def get_readonly_fields(self, request, obj=None):
readonly_fields = super().get_readonly_fields(request, obj)
if request.user.has_perm('app.can_edit_erp_id') is False:
readonly_fields = readonly_fields + ('erp_id',)
return readonly_fields