2017-04-08 87 views
0

我有一個模型PROVADjango的形式定製ATTRS部件的ImageField

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/*"> 
+0

所以,呈現的''將不會有按鈕來選擇圖片的文件,對吧?請注意,'type = camera'不是輸入的註冊名稱,瀏覽器無法解析它。 –

+0

如果以下答案幫助您解決了問題,請將其標記爲已接受。在StackOverflow中這是一個很好的習慣:) –

回答

0

camera是一個企業的type屬性的值不有效的HTML input元素。

如果你將其更改爲<input type="camera" name="a-name-here" value="some-value">,那麼Chrome和FF將呈現爲一個文本輸入,而你ProvaForm期望一個文件(ImageField),導致失敗的驗證。當然,你可以通過寫你自己的方式來覆蓋驗證部分,但是如果從一開始就使用ImageField,那麼這個字段是否會被渲染爲文本?

檢查here獲取input元素的type屬性的可能值。