2010-03-18 6 views
1

Foo (models.Model): limace = models.SlugField (unique = True) image = models.ImageField (upload_to 'uploads /' =)Django et ImageField Question

Je veux faire deux choses avec :

Tout d'abord, je souhaite que l'image soit redimensionnée à une largeur et à une hauteur spécifiques après le téléchargement. J'ai essayé de lire le documentation mais semble avoir erreur:

image = models.ImageField(upload_to='uploads/', height_field=258, width_field=425) 

En second lieu, lors de l'ajout d'un élément via le panneau d'administration, je veux que mon nom de fichier de l'image à renommer en même que limace, le cas échéant question se pose (comme si cette image nommée existe déjà, ajoutez "_" à la fin comme c'était le cas IE: Ma limace est i-love-you-guys, l'image téléchargée comme i-love-you-guys.png au fin.

Répondre

2

Signals sont la réponse à vos deux questions.

Comme il est indiqué dans la documentation, t Les champs height_field et width_field sont des noms de champs où stocker la hauteur et la largeur de l'image originale - ne pas forcer l'image à une certaine taille. Je pense que la meilleure façon de gérer ce que vous voulez faire est d'utiliser le signal pre_save ou post_save pour redimensionner l'image en utilisant PIL. Vous pouvez également vouloir vérifier sorl. En fait, vous pouvez utiliser la vignette du sorl dans votre signal pour créer la nouvelle image.

Pour renommer le nom de fichier, utilisez également un signal.

Questions connexes