2

djangoでImageFieldを操作しようとしています。これが私のモデルです

class Album(models.Model):
    title = models.CharField(max_length=100)

    def __unicode__(self):
        return self.title

class Photo(models.Model):
    image = models.ImageField(upload_to='photos/')
    album = models.ForeignKey(Album)
    title = models.CharField(max_length=100, default="")

    def __unicode__(self):
        return self.title

class PhotoModelForm(forms.ModelForm):
    class Meta:
        model = Photo

これがurls.pyの一部です

...
url(r'^trial/upload/$', 'trial.views.upload'),
...

views.py

def upload(request):
    if request.method == 'POST':
        form = PhotoModelForm(request.POST, request.FILES)
        if form.is_valid():
            photo = form.save()
            return render_to_response('trial/thanks_upload.html',{
                'photo': photo
            }, context_instance = RequestContext(request))
    else:
        form = PhotoModelForm()
    return render_to_response('trial/upload.html', {
      'form': form
    }, context_instance = RequestContext(request))

upload.html

<form enctype="multipart/form-data" action="/trial/upload/" method="post">
    {% csrf_token %}
    {% for field in form %}
        <div class="fieldWrapper">
            {{ field.errors }}
            {{ field.label_tag }}: {{ field }}
        </div>
    {% endfor %}
    <p><input type="submit" value="Upload" /></p>
</form>

しかし、保存すると次のエラーが発生します: Unicodeへの強制/試行/アップロード/でのTypeError:文字列またはバッファが必要です。タプルが見つかりました

photo.saveにエラーが表示されます

誰かがなぜそれができるのか考えを持っていますか?なぜタプルが表示されるのですか?ばかげたバグがあると確信しています...

4

1 に答える 1

9

私はそれを自分で持っています。settings.pyには、MEDIA_ROOT設定があります。

MEDIA_ROOT = 'd:/dev/python/scripts/app/media/',

Pythonは、最後にコンマがあるため、オブジェクトをタプルにします。そのため、オブジェクトを保存できませんでした。次回はカンマを見てください!

于 2011-06-03T04:46:59.250 に答える