1

J'ai implémenté ImageFields dans mon modèle et installé PIL (pas l'installation la plus propre). Les choses semblent fonctionner comme je reçois un bouton de téléchargement dans l'admin et quand j'appelle la propriété .url dans la vue, je reçois la chaîne avec le nom de fichier + sa propriété de téléchargement. Le problème est que le fichier n'est pas là, apparemment il ne sera pas téléchargé une fois que j'ai enregistré le modèle.Django ImageField: les fichiers ne sont pas téléchargés

Une idée?

Merci

Voici un échantillon de ma situation de code

models.py

class My_Model(models.Model): 
[...] 
    image = models.ImageField(upload_to = 'images/my_models/main') 

view.py

'image': query.my_model.image.url 

Résultat:

static/images/my_models/main/theimage.png 
+0

Etes-vous sûr qu'il est un formulaire multipart? – tback

Répondre

1

Assurez-vous que vous lier request.FILES à la forme lors de la publication, et que la forme est déclarée comme plusieurs parties dans le modèle

est ici le point de vue d'un de mes applications:

@login_required 
def submit(request): 
    if request.method == 'POST': 
     (Photo.objects.count()+1, request.FILES['photo'].name.split(".")[1]), request.FILES['photo'])} 
     form = PhotoForm(request.POST, request.FILES) 
     if form.is_valid(): 
      new = Photo(photo=request.FILES['photo'], name=request.POST['name']) 
      new.save()   
      return HttpResponseRedirect('/') # Redirect after POST 
    else: 
     form = PhotoForm() 
    return render_to_response('app/submit.html', {'form': form}, context_instance=RequestContext(request)) 

et la classe photoformer:

class PhotoForm(forms.ModelForm): 
    class Meta: 
     model = Photo 
     fields = ('name', 'photo') 
+0

mmmh Je ne suis pas très familier avec votre méthode ... vous n'utilisez pas ImageField n'êtes-vous pas? Quand je regarde dans le dossier sur le serveur il n'y a pas d'image téléchargée ... –

+0

@ mαττjαĸøb - Je suppose que vous parlez de télécharger via l'administrateur? –

+0

oui. Je l'ai résolu! le problème était un paramètre incorrect de MEDIA_ROOT et MEDIA_URL. –

Questions connexes