47

私は本当に明らかにばかげたことをしていると確信していますが、数時間それを理解しようとしてきましたが、何も飛び出していません.

ModelForm を使用しているので、モデルからいくつかのフィールドを編集用に公開できます。2x イメージ フィールド、1x テキスト フィールド。フォームが処理され、TextField が機能します。2 つの ImageField が機能しないため、今日ここにいます。

私はDjango 1.0.2を使用しています

関連するコードは次のとおりです (さらに必要な場合はお問い合わせください。HTML は含まれていません。その部分は正常に動作しているように見えるためです)。

モデル:

class Company(models.Model):
    #...
    logo = models.ImageField(upload_to='logos', blank=True)
    intro_pic = models.ImageField(upload_to='intropics', blank=True)
    intro_text = models.TextField(blank=True)

ビューとフォーム:

def admin_edit(request, company_slug):
    company = get_object_or_404(Company, slug = company_slug)

    f = AdminEditForm(instance = company)
    if request.method == 'POST':
        f = AdminEditForm(request.POST, instance = company)
        if f.is_valid():
            print "Processing form"
            print f.cleaned_data['intro_pic']
            f.save()

    return render_to_response('uadmin/edit.html', {'company':company, 'f':f}, RequestContext(request))


class AdminEditForm(ModelForm):
    class Meta:
        model = Company
        fields = ['logo', 'intro_pic', 'intro_text']
4

2 に答える 2

107

まあ、私はばかのように感じます。Django がアップロードされたファイルを処理できるようにするには、request.FILES 変数をフォームに渡す必要があります (理にかなっていますよね?!)。

私の場合、次の行は次のとおりです。

f = AdminEditForm(request.POST, instance = company)

に:

f = AdminEditForm(request.POST, request.FILES, instance = company)

確認すべきもう 1 つの点 (将来このような問題に遭遇した場合) は、フォームがマルチパートであることです。タグ<form>は次のようになります。

<form enctype="multipart/form-data" method="post" action="">
于 2009-03-25T13:44:43.730 に答える