2013-02-21 2 views
2

У меня есть поле изображения в моем models.py ...Django editable = Ложно и показывается в полях?

qr_image = models.ImageField(
     upload_to="public/uploads/", 
     height_field="qr_image_height", 
     width_field="qr_image_width", 
     null=True, 
     blank=True, 
     editable=False 
    ) 

Когда это editable=False я получаю неприятную ошибку при попытке показать его. Я не хочу, чтобы поле редактирования, однако я хочу, чтобы образ, чтобы показать в админ «редактировать» страницы, т.е. fieldsets

Я новичок в Django, может кто-нибудь сказать мне, если это возможно, и точка я в правильном направлении здесь?

спасибо.

ответ

5

Если у вас есть ModelAdmin вроде этого:

class MyModelAdmin(admin.ModelAdmin): 

    fieldsets = [ 
     ('Fieldset', {'fields': ['model_field', 'another_field', 'readonly_field']}), 
    ] 

где readonly_field имеет editable=False или, если это DateTimeField с auto_now_add=True, то посещение страницы администратора для вашей модели приведет к ошибке, не найденной в поле.

Чтобы включить поле только для чтения в вашем fieldsets, включают readonly_fields так:

class MyModelAdmin(admin.ModelAdmin): 

    fieldsets = [ 
     ('Fieldset', {'fields': ['model_field', 'another_field', 'readonly_field']}), 
    ] 
    readonly_fields = ('readonly_field',) 
+0

Да! 'readonly_field' должно быть в' readonly_fields', или raise 'не может быть указано для формы модели пользователя, так как это не редактируемое поле. Проверка полей/полей/исключение атрибутов 'error – WeizhongTu

+0

Если только одно поле находится в' readonly_fields', вам нужно добавить запятую в конец кортежа: '('readonly_field',)', чтобы избежать получения ошибки: 'TypeError: can только конкатенация кортежа (а не «str») на кортеж – guival

Смежные вопросы