1

私は以下のようなモデルを持っています

class Book(models.Model):
    name = models.CharField(max_length=56)
    picture = ImageField(upload_to='/max/')

したがって、以下のようなテンプレートから Book モデルを編集する場合

<form enctype="multipart/form-data" action="{% url 'edit_book' book_id %}" method="post">
   {% csrf_token %}
   {{book_form.name}}
   {{book_form.picture}}
</form>

書籍レコードに既に画像がある場合は、余分な html チェックボックスが表示されます

    Currently: 
<a href="/media/product138ba6ccf0d1408d968577fa7648e0ea/assets/bubble.png">media/product138ba6ccf0d1408d968577fa7648e0ea/assets/bubble.png</a>

 <input id="picture-clear_id" name="picture-clear" type="checkbox" /> <label for="picture-clear_id">Clear</label><br />Change: 

<input id="selectedFile" name="picture" type="file" />

したがって、本が作成されたときにすでに画像がある場合、そのcheckbox前にいくつかのラベルがあり、そのチェックボックスを回避するにはどうすればよいですか?

編集

フォーム.py

class BookForm(ModelForm):
    class Meta:
        model = Book

def __init__(self, *args, **kwargs):

    super(BookForm, self).__init__(*args, **kwargs)
    self.fields['picture'].widget.attrs = {'id':'selectedFile'} 
4

1 に答える 1

3

ClearableFileInputあなたの説明はwidgetのように見えますが、ドキュメントによると、それはFileInputデフォルトのウィジェットとして使用されているため、正直言って少し驚いています。

まだ。明示的に選択してみてくださいFileInput

from django.forms import ModelForm, FileInput

class BookForm(ModelForm):
    class Meta:
        model = Book
        widgets = {
            'picture': FileInput(),
        }

    def __init__(self, *args, **kwargs):
        super(BookForm, self).__init__(*args, **kwargs)
        self.fields['picture'].widget.attrs = {'id':'selectedFile'} 

更新:もう驚かない。この問題を調査したところ、単に Django Docs に間違いがあったことがわかりました。現在は修正されています。はデフォルトのウィジェットであるため、上記のように明示的ClearableFileInputに設定する必要があります。FileInput

于 2013-10-31T15:57:55.760 に答える