Ошибка при загрузке изображения в django: «Приведение к Unicode: нужна строка или буфер, кортеж найден» - PullRequest
2 голосов
/ 31 мая 2011

Попытка работать с ImageField в Django. Вот мои модели

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>

Но при сохранении у меня появляется следующая ошибка: TypeError at / trial / upload / приведение к Unicode: нужна строка или буфер, кортеж найден

Ошибки появляются на фото. Сохранение

У кого-нибудь есть идеи, почему это может быть? Почему tuple появляется вообще? Я уверен, что есть глупая ошибка ...

1 Ответ

9 голосов
/ 03 июня 2011

Я получил это сам.В settings.py есть настройка MEDIA_ROOT, которая была

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

Python делает объект кортежом из-за запятой в конце.Вот почему это не могло спасти объект.Следите за своими запятыми в следующий раз!

...