2017-09-08 8 views
2

私はここで何が間違っているのか分かりません。他のウェブサイトの画像を自分のデータベースに保存しようとしていますが、に画像がありますか? - __init __()に予期しないキーワード引数 'save'があります。 imagesはアプリであり、createはURLの名前です。ここでは、コードTypeError at images/create - __init __()は予期しないキーワード引数 'save'を持っています

urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^create/$', views.image_create, name='create'), 
] 

views.py

from django.shortcuts import render, redirect 
from django.contrib.auth.decorators import login_required 
from django.contrib import messages 
from .forms import ImageCreateForm 

@login_required 
def image_create(request): 
    if request.method == 'POST': 
     # Form is sent 
     form = ImageCreateForm(data=request.POST) 
     if form.is_valid(): 
      # Form data is valid 
      cd = form.cleaned_data 
      new_item = form.save(commit=False) 

      # Assign current user to the item 
      new_item.user = request.user 
      new_item.save() 
      messages.success(request, 'Image added successfully') 

      # Redirect to the newly created item detail view 
      return redirect(new_item.get_absolute_url()) 
    else: 
     # Build form with data provided by the bookmarklet via GET 
     form = ImageCreateForm(data=request.GET) 

    return render(request, 'images/image/create.html', 
    {'section' : 'images', 'form' : form}) 

ともsave()メソッド

from urllib import request 
from django import forms 
from django.core.files.base import ContentFile 
from django.utils.text import slugify 
from .models import Image 

class ImageCreateForm(forms.ModelForm): 
    class Meta: 
     model = Image 
     fields = ('title', 'url', 'description') 
     widgets = { 
      'url' : forms.HiddenInput, 
     } 

    def clean_url(self): 
     url = self.cleaned_data['url'] 
     valid_extensions = ['jpg', 'jpeg'] 
     extension = url.rsplit('.', 1)[1].lower() 
     if extension not in valid_extensions: 
      raise forms.ValidationError('the given URL doesn\'t match valid image extensions') 
     return url 

    def save(self, force_insert=False, force_update=False, commit=True): 
     image = super(ImageCreateForm, self).save(commit=False) 
     image_url = self.cleaned_data['url'] 
     image_name = '{}.{}'.format(slugify(image.title), 
     image_url.rsplit('.', 1)[1].lower()) 

     # Download image from given URL 
     response = request.urlopen(image_url) 
     image.image.save(image_name, ContentFile(response.read(), save=False)) 

     if commit: 
      image.save() 
     return image 

を上書きするコードが含まれていforms.pyです誰か助けてください!

答えて

4

ContentFileはその__init__には、noキーワードsaveを取らない:

ContentFile(response.read(), save=False) 
#       ^^^ ???? 
+0

今では/ /作成/画像でIntegrityErrorを言っている - NOT NULL制約が失敗しました:あなたがのために複数の画像を追加しようとしているようimages_image.user_id – Caspian

+0

が見えます1人のユーザーですが、モデルは1人のユーザーにつき1つの画像しか撮れません。 –

関連する問題