我有一个模型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
属性的可能值。