How to make a field in Django Admin readonly or non-editable based on the value from another field?
I have used readonly_fields=('amount',) but this wont fix my problem , as I need to manage it based on another field .
You can override the admin's get_readonly_fields method:
class MyAdmin(admin.ModelAdmin):
    def get_readonly_fields(self, request, obj=None):
        if obj and obj.another_field == 'cant_change_amount':
            return self.readonly_fields + ('amount',)
        return self.readonly_fields
                        For filling out one field from another, you need to add a prepopulated_fields attribute to the relevant ModelAdmin class. For example:
class PostAdmin(admin.ModelAdmin):
    prepopulated_fields = {"slug": ("title",)}
The relevant documentation can be found here.
However, in the version of django I'm using at the moment (1.3), this seems to create an  error when readonly_fields is also used.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With