2017-04-24 1 views
0

Meine AnsichtenDas Bild ist nicht über django Form

def apost(request): 
    if request.method =='POST': 
     form = APostForm(request.POST, request.FILES) 
     if form.is_valid(): 
      form = form.save(commit=False) 
      form.slug = slugify(form.title) 
      form.save() 
      return redirect('apost') 
    else: 
     form = APostForm() 

    template_name = 'dadmin/form.html' 
    items = Post.objects.all() 
    context = {'title':'Add Post','form':form,'items':items} 
    return render (request, template_name, context) 

Meine Form

class APostForm(forms.ModelForm): 
    class Meta: 
     model = Post 
     fields = {'title','photo','content'} 

Modelle

photo = models.ImageField(upload_to='images') 

Kein hochgeladen Bild hochgeladen Phot akzeptiert o ist ausgewählt, aber wenn Sie auf Speichern klicken. Es zeigt an, dass dieses Feld ein erforderlicher Fehler ist. Ich hatte die Fragen hier durchsucht, aber bitte. FILES löst andere Probleme, aber keine Minen. Was ist los mit dir?

+1

Haben Sie 'enctype = "multipart/form-data"' in HTML-Form-Tag? –

+0

Das habe ich vermisst. Es funktionierte jetzt. Vielen Dank! –

Antwort

1

Sie in Vorlage verwenden sollten, wenn Sie Formular hochladen:

<form class="form-horizontal form_middle" enctype='multipart/form-data' method="POST"> 
#apply logic for media upload 
</form> 
+0

Guter Job, der die Antwort aus den Kommentaren stiehlt. –

-1

Datei-Upload ist ein wenig seltsam in Modellformen in Django. Ihre ändern forms.py zu -

class APostForm(forms.ModelForm): 
    photo=forms.FileField(label='Upload image') # or image field 
    class Meta: 
     model = Post 
     fields = {'title','content'} 

form.save() wird das Feld automatisch speichern.

+1

Das hat bei mir nicht funktioniert. Aber

in der Vorlage funktioniert. Vielen Dank! –