django admin make a field read-only when modifying obj but required when adding new obj
You can override the admin’s get_readonly_fields method: class MyModelAdmin(admin.ModelAdmin): def get_readonly_fields(self, request, obj=None): if obj: # editing an existing object return self.readonly_fields + (‘field1’, ‘field2’) return self.readonly_fields