Django admin - make all fields readonly

后端 未结 9 1170
春和景丽
春和景丽 2020-12-05 17:56

I\'m trying to make all fields readonly without listing them explicitly.

Something like:

class CustomAdmin(admin.ModelAdmin):
    def get_readonly_fi         


        
相关标签:
9条回答
  • 2020-12-05 18:23
    @admin.register(Hero)
    class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
        ...
        readonly_fields = ["father", "mother", "spouse"]
    

    reference : https://books.agiliq.com/projects/django-admin-cookbook/en/latest/changeview_readonly.html

    0 讨论(0)
  • 2020-12-05 18:23

    With get_fieldsets you get all fields from the form

    def get_readonly_fields(self, request, obj=None):
        readonly = []
        for fs in self.get_fieldsets(request, obj):
            if len(fs) > 1:
                readonly += fs[1].get('fields', [])
        return readonly
    
    0 讨论(0)
  • 2020-12-05 18:24

    This worked for me with Django 1.10

    def get_readonly_fields(self, request, obj=None):
        if request.user.is_superuser:
            return self.readonly_fields
    
        return list(set(
            [field.name for field in self.opts.local_fields] +
            [field.name for field in self.opts.local_many_to_many]
        ))
    
    0 讨论(0)
提交回复
热议问题