0

選択したファイルを保存しない ModelForm に問題があります。

フォームデータを受け取るビューの最初の行で pdb を使用してこれを見ました:

(Pdb) pp request.FILES
<MultiValueDict: {}>

enctype属性はformタグに設定されます。これは、少なくとも Chromium と Opera で発生します。

この問題に関する多くの質問を読みましたが、私の場合は何も役に立ちませんでした。それ以上のアイデアはありますか?

これは、モデルの関連部分です。

class AudioCut(models.Model):

    slug = models.SlugField(max_length=128, unique=True)
    logo = models.ImageField(upload_to=u'cuts_logos', blank=True)

これは次の形式です。

class AudioCutForm(ModelForm):
    "Form for creating a new AudioCut"
    start = SecondsSinceEpochField()
    tags = TagsCommaSeparatedField()

    class Meta:
        model = AudioCut
        fields = ('title', 'description', 'logo', 'start', 'length',
                    'category', 'tags', 'radio', 'show')
        widgets = {'title': TextInput(attrs={'size': 34, 'maxlength': 32}),
                    'radio': HiddenInput(), 'show': HiddenInput(),
                    'tags': Textarea()}

これはビューです:

def make_new_cut(request):

    if request.method == 'POST':
        cutform = AudioCutForm(request.POST, request.FILES)
        out_data['cutform'] = cutform
        if cutform.is_valid():
            newcut = cutform.save(False)
            newcut.owner = request.user
            newcut.save()
            cutform.save_m2m()

そして、これはテンプレートです:

<form enctype="multipart/form-data" id="cut_this_frm" method="post" action="#">{% csrf_token %}
    <label for="id_title">* T&iacute;tulo</label>{{cutform.title}}
    {{cutform.title.errors}}
    <label for="id_description">Descipci&oacute;n</label>{{cutform.description}}
    {{cutform.description.errors}}
    <label for="id_tags">Etiquetas</label>{{cutform.tags}}
    <span class="help_text">Separe las etiquetas con comas (,)</span><br/>
    {{cutform.tags.errors}}
    <input type="button" class="image_upload"/><label for="id_logo" class="image_upload">Agregar imagen</label>{{cutform.logo}}<span id="logo_filename">&emsp;</span>
    {{cutform.radio}}{{cutform.show}}{{cutform.start}}{{cutform.length}}
    <div class="errors">{{cutform.non_field_errors}}</div>
    <input type="hidden" name="next_url" id="next_url" value="#"/>
    <div class="save_cut"><input type="reset" value="Cancelar"/><input type="submit" value="Guardar"></div>
</form>

私がチェックした他のシン、画像が保存されているフォルダーが存在し、サーバーがそれに書き込むことができます。Djangoの管理者で問題なく画像を追加できます。

localhost:62080 で開発サーバーを実行しています。

4

0 に答える 0