django形成自定义attrs widget imagefield

时间:2017-04-08 12:09:06

标签: python django forms django-forms django-widget

我有一个模型 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输入的类型。从相机'到特定图像。

还尝试了ImageField和

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

我想要的是纯粹的html:

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

1 个答案:

答案 0 :(得分:0)

camera 不是有效的HTML,用于type元素的input属性的值。

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

检查here,了解type元素的input属性的可能值。