How to add readonly inline on django admin
After a while of trying to find the name I figured out thanks to this answer, so I checked the names at self.opts.local_fields
and found the name of the middle table and added it to readonly_fields
, setting can_delete
to False.
class SummaryInline(admin.TabularInline): model = ParserError.summaries.through readonly_fields = ('myclasssummary',) can_delete = False
pretty simple but took me a while so I figured out it was a good idea to add it here.
You can make the entire inline readonly by adding:
class UnitsInline(admin.TabularInline): def has_change_permission(self, request, obj=None): return False
This will prevent anyone from editing the entry from the admin.
Another example that prevents, adding, deletion and displays all the inline fields as readonly:
class ReadOnlyInline(admin.TabularInline): def has_change_permission(self, request, obj=None): return False def has_add_permission(self, request, obj=None): return False def has_delete_permission(self, request, obj=None): return False def get_readonly_fields(self, request, obj=None): return list(super().get_fields(request, obj))