2009-11-04 5 views
1

J'ai un modèle qui ressemble à ceci:django ligne admin Formset passer outre sauver

class ProjectImage(models.Model): 
    big_thumb = ThumbnailField(upload_to='profiles', size=(500, 500)) 
    med_thumb = ThumbnailField(upload_to='profiles', size=(300, 300)) 
    small_thumb = ThumbnailField(upload_to='profiles', size=(100, 100)) 

J'associe ProjectImage avec un projet comme TabularInline. Dans l'admin, j'aimerais pouvoir dire si les miniatures moyennes et/ou petites n'ont pas été fournies, utilisez la même image que la grande miniature. Cependant, j'ai du mal à comprendre comment spécifier ce comportement.

Répondre

1

Vous avez deux options dans ce cas, vous pouvez surpassement ProjectImage économisons défintion et avoir copie big_thumb à med_thumb et small_thumb si elles sont Aucun, ou tout simplement créer une définition simple de modèle pour afficher chaque champ.

def get_med_thumb_url(self): 
    if self.med_thumb is None: 
     return self.big_thumb.url 

    return self.med_thumb.url 

Et faire la même chose pour small_thumb qui vous empêche de tripoter la méthode de sauvegarde et d'avoir à copier les choses sur l'espace et des déchets.

Je ne me souviens pas si ImageField a une définition de type get_FOO_url, mais si c'est le cas, vous pouvez toujours le surcharger.

+0

Puis-je encore remplacer la méthode de sauvegarde de ProjectImage même s'il s'agit d'un formulaire en ligne? – btoconnor

+0

Je ne vois pas pourquoi pas. Il doit encore être sauvé. :) – Bartek