12

アップロードされた画像からオブジェクトを作成する方法を探していhelp(django.db.models.ImageField)ます。dir(django.db.models.ImageField)ImageField

request.FILESの画像はInMemoryUploadedFileですが、 を含むモデルを保存しようとしています。ImageFieldどうすれば を に変換できInMemoryUploadedFileますImageFieldか?

この種のものをどのように見つけますか?この 2 つのクラスには継承関係があるのではないかと思いますが、調べる必要があるdir()かどうかを調べるには、多くのことを行う必要があります。

4

3 に答える 3

25

InMemoryUploadedFileに「変換」するのではImageFieldなく、に保存する必要がありますImageField

image = request.FILES['img']
foo.imagefield.save(image.name, image)

ここで、fooはモデル インスタンス、imagefieldImageField.

または、フォームから画像を引き出す場合:

image = form.cleaned_data.get('img')
foo.imagefield.save(image.name, image)
于 2010-02-23T10:44:15.863 に答える
1

フォーム インスタンスを使用して、ファイル アップロード フィールドを持つフォームを実装できます。ビューは次のとおりです。

def form_view(request):
    if request.method == 'POST':
        form = FooForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return render_to_response('result.html')
        return render_to_response('form.html', {
            'form': form;
            'error_messages': form.errors;
        }
    form = FooForm()
    return render_to_response('form.html', {
        'form': form;
    }

form.save()は、コンストラクターにrequest.FILES引数を含めたため、アップロードされたファイルを他のすべてのフィールドと共に保存します。モデルでは、 ModelFormクラスのFooFormサブクラスを次のように定義する必要があります。

class FooForm(ModleForm):
    Meta:
        model = Foo

...ここで、 Foo はModelのサブクラスであり、永続的に保存するデータを記述します。

于 2009-02-12T20:23:38.443 に答える