删除django图像字段的复选框

时间:2013-10-31 15:18:31

标签: python django image checkbox

我有一个类似下面的模型

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和标签,那么如何避免使用该复选框?

修改

forms.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'} 

1 个答案:

答案 0 :(得分:2)

说实话,我有点惊讶,因为你描述的内容看起来像ClearableFileInput widget,而according to the documentation,它是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中出现了一个错误,now correctedClearableFileInput是默认小部件,因此您需要明确设置FileInput,如上所示。