2016-03-19 20 views
0

Ich versuche, ein Bild über die ImageField hochladen. Ich bekomme http 200, aber das Bild wird nicht gespeichert.Django Bild nicht speichern

Mein Modell ist:

class RestaurantProfile(BaseModel): 
    username = models.OneToOneField(User, on_delete=models.CASCADE) 
    name = models.CharField(max_length=100) 
    phone = models.CharField(max_length=15) 
    address = models.TextField(default='', blank=True) 
    restaurant_image = models.ImageField(upload_to='restaurants', blank=True, null=True) 

Meine Form ist:

class UpdateDetailsForm(forms.Form): 
    phone = forms.CharField(widget=forms.NumberInput(attrs={'class': 'form-control input-glass', 'id': 'phone', 
               'placeholder': 'Contact No'})) 
    address = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control input-glass', 'id': 'address', 
               'placeholder': 'Address'})) 
    restaurant_image = forms.ImageField() 

Meine Ansicht Code ist:

def updatedetails(request): 
    current_user = request.user.id 
    rest = RestaurantProfile.objects.get(username=current_user) 
    rid = rest.id 
    if request.method == 'POST': 
     print("fas") 
     form = UpdateDetailsForm(request.POST, request.FILES) 
     print(request.FILES) 

     if form.is_valid(): 
      data = form.cleaned_data 
      print(data) 
      phone = data["phone"] 
      address = data["address"] 
      image = data["restaurant_image"] 
      RestaurantProfile.objects.filter(id=rid).update(phone=phone, address=address, restaurant_image=request.FILES['restaurant_image']) 
      return redirect('dashboard') 
     else: 
      print(form.errors) 
    else: 
     form = UpdateDetailsForm() 

    return render(request, "updatedetails.html", {'form': form}) 

In meinem setting.py, ich habe hinzugefügt:

# Media files 
MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 

Im url.py habe ich hinzugefügt:

urlpatterns += staticfiles_urlpatterns() 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
+0

Enthält Ihr

das Attribut type = "multipart/form-data"? – C14L

+0

Ich habe enctype = "multipart/form-data" –

Antwort

1

In Ihrem Fall Sie Datei Handbuch auf diese Weise Django file upload doc

oder einfache Art und Weise

form.py

 
    class UpdateDetailsForm(forms.ModelForm): 
     class Meta: 
     model = RestaurantProfile 
     fields = ('phone', 'address', 'restaurant_image',) 

view.py speichern müssen

 
    form = UpdateDetailsForm(request.POST, request.FILES) 

    if form.is_valid(): 
     form.save()