1

I have a model 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)

and this is the form:

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'}),

            }

the customization of the codice field is working, but not the foto. I want to change the type of html input from 'file' to specific image from 'camera'.

Tried also ImageField and

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

What am I missing to get it like the pure html:

<input type="file" capture="camera" accept="image/*">
summer
  • 213
  • 3
  • 12
  • So, the rendered `` will not have a button to choose file for the image, right? Note, that `type=camera` is not a registered name for `input`s and browsers cannot parse it. – nik_m Apr 08 '17 at 12:37

1 Answers1

1

camera is not valid HTML for the value of the type attribute of an input element.

If you do change it to <input type="camera" name="a-name-here" value="some-value">, then Chrome and FF will render it as a text input, while your ProvaForm expects a file (an ImageField), resulting in a failed validation. Of course you can override the validation part, by writting you own one, but what's the point of using an ImageField from the start if instead this field is going to be rendered as a text?

Check here for the possible values of the type attribute of an input element.

nik_m
  • 11,825
  • 4
  • 43
  • 57