django 表单自定义 attrs 小部件 imagefield

django form custom attrs widget imagefield

我有一个模型 Prova:

class Prova(models.Model):
    id = models.AutoField(primary_key=True)
    codice=  models.TextField(blank=True, null=True)  
    foto = models.ImageField(upload_to='stati/uploads/', blank=True)

这是形式:

class ProvaForm(forms.ModelForm):
    class Meta:
        model = models.Prova
        fields = ('codice','foto',)
        widgets = {
            'codice': forms.Textarea(attrs={'rows':1, 'cols':15,
                                            'autofocus':'autofocus',
            }),
            'foto': forms.ClearableFileInput(attrs={'type': 'camera'}),

            }

codice 字段的自定义有效,但 foto 无效。 我想将 html 输入的类型从 'file' 更改为特定图像从 'camera'。

还尝试了 ImageField 和

 'foto': forms.FileInput(attrs={'capture': 'camera'}),

我缺少什么才能像纯粹的那样html:

<input type="file" capture="camera" accept="image/*">

camera 对于 input 元素的 type 属性的值 无效 HTML。

如果您确实将其更改为 <input type="camera" name="a-name-here" value="some-value">,则 Chrome 和 FF 会将其呈现为文本输入,而您的 ProvaForm 需要一个文件(ImageField ),导致验证失败。当然,您可以通过编写自己的验证部分来覆盖验证部分,但是如果此字段将呈现为文本,那么从一开始就使用 ImageField 有什么意义?

检查 here 以获得 input 元素的 type 属性的可能值。