Решение, которое я придумал, - переписать get_changelist и get_form:
def get_form(self, request, obj=None, **kwargs):
fields = [$$$] # Default fields for everyone
if not has_group(request.user, $$$): # Check if User IS NOT in group
fields += [$$$] # Add field that is associated with group to list
self.readonly_fields = fields
return super(YourAdminName, self).get_form(request, obj, **kwargs)
def get_changelist(self, request, **kwargs):
fields = [$$$] # Default fields for everyone
if has_group(request.user, $$$): # Check if User IS in group
fields += [$$$] # Add field that is associated with group to list
self.list_editable = fields
return super(YourAdminName, self).get_changelist(request, **kwargs)