[Django]-Make django model field read only or disable in admin while saving the object first time

16👍

If you want to make the field read-only during creation you should do it the other way round:

def get_readonly_fields(self, request, obj=None):
    if obj is None:
        return ['headline']
    return []

85👍

There is no need to override get_readonly_fields. Simplest solution would be:

class ItemAdmin(admin.ModelAdmin):
    exclude=("headline ",)
    readonly_fields=('headline', )

When using readonly_fields you can’t override get_readonly_fields, because default implementation reads readonly_fields variable. So overriding it only if you have to have some logic on deciding which field should be read-only at time.

11👍

Just do editable=False, while adding the field in the model

headline = models.CharField(max_length=255,editable=False)

It wont be editable and you cannot see the field from admin panel, but you can add values to them from a method within the model

5👍

Other way is:

    def get_form(self, request, obj=None, **kwargs):
        form = super().get_form(request, obj=None, **kwargs)

        if obj is None:

            form.base_fields["my_field"].disabled = True

        return form

Leave a comment