Django 表单自定义 attrs 小部件图像字段



我有一个模型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 输入的类型从"文件"更改为"相机"中的特定图像。

还尝试了图像字段和

'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有什么意义呢?

在此处查看input元素的type属性的可能值。

最新更新