2017-08-28 5 views
1

J'ai ajouté une méthode de modèle qui affiche avec succès les images dans admin, mais seulement dans list_display, si je l'ajoute à un fieldsets avec le but de le faire afficher lors de l'édition ou l'ajout. Il jette une erreur.méthode de modèle ajoutée à fieldsets throws FieldError

Exception Value:  

Unknown field(s) (thumbnail) specified for Image. Check fields/fieldsets/exclude attributes of class ImageAdmin. 

Je suis sûr que je fais quelque chose d'illégal. Ou essayer de faire quelque chose qui n'a pas de sens. Parce que si je vais ajouter une image qui n'existe pas encore, elle ne peut pas non plus afficher l'image.

Il me manque clairement comment tout cela lie ensemble. Quelqu'un peut-il expliquer?

Merci

Dans mon models.py

from django.utils.html import format_html 

class Image(models.Model): 
    image = models.ImageField(blank=True, upload_to=_image_upload) 

    def thumbnail(self): 
     return format_html(
      '<img src="{}" width="auto" height="250">'.format(self.image.url) 
     ) 

admin.py

@admin.register(Image) 
class ImageAdmin(admin.ModelAdmin): 
    fieldsets = (
     ('Edit or upload image', { 
      'fields': ('thumbnail','...',) #throws a FieldError 
     }), 
    ) 
    list_display = ('thumbnail', '...') #works 

Répondre

0

Essayez d'ajouter readonly_fields à ImageAdmin:

@admin.register(Image) 
class ImageAdmin(admin.ModelAdmin): 
    readonly_fields = 'thumbnail' # ADD THIS 
    fieldsets = (
     ('Edit or upload image', { 
      'fields': ('thumbnail','...',) #throws a FieldError 
     }), 
    ) 
    list_display = ('thumbnail', '...') #works 

Si vous avez besoin de la vignette uniquement pour l'administrateur, voir how to use AdminThumbnail from django-imagekit.

+0

Merci @Risadinha vos solutions ont fonctionné magnifiquement. Et le https://github.com/matthewwithanm/django-imagekit semble intéressant. Merci d'avoir partagé. –