In a Django form, how do I make a field readonly (or disabled) so that it cannot be edited?

后端 未结 26 1495
-上瘾入骨i
-上瘾入骨i 2020-11-22 04:09

In a Django form, how do I make a field read-only (or disabled)?

When the form is being used to create a new entry, all fields should be enabled - but when the recor

26条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-22 04:27

    awalker's answer helped me a lot!

    I've changed his example to work with Django 1.3, using get_readonly_fields.

    Usually you should declare something like this in app/admin.py:

    class ItemAdmin(admin.ModelAdmin):
        ...
        readonly_fields = ('url',)
    

    I've adapted in this way:

    # In the admin.py file
    class ItemAdmin(admin.ModelAdmin):
        ...
        def get_readonly_fields(self, request, obj=None):
            if obj:
                return ['url']
            else:
                return []
    

    And it works fine. Now if you add an Item, the url field is read-write, but on change it becomes read-only.

提交回复
热议问题