2017-01-16 53 views
0

非模型字段我需要在Django形式添加一個簡單的非模型字段:訪問在pre_save信號

<input type="text" name="setupwork" value=""/> 

然後在pre_save信號訪問其值。

有沒有辦法做到這一點,我看着pre_save參數:發件人,實例,使用,** kwargs,但無法找到該字段。

+3

'pre_save'是一個模型的信號,而不是一個形式,你究竟想要做什麼? – Sayse

+0

我想要一個'蜜罐'字段,這是一個隱藏的表單字段,應該總是空的(人類不會填充它)。所以我需要檢查任何時候表單提交這個領域確實是空的。有一個模塊,但它導致django-allauth的問題,所以我嘗試做簡單的自定義實現。有形式的信號嗎? –

+0

那麼你想使用模型表單還是隻是試圖在表單中包含一個隱藏的字段? – Sayse

回答

1

這聽起來好像你只是想添加到您的形式隱藏字段,然後你就可以檢查是否有在它

class MyForm(Form): 
    my_field = forms.CharField(widget=forms.HiddenInput()) 

    def clean_my_field(self): 

     data = self.cleaned_data['my_field'] 

     if data: 
      raise ValidationError() 
     return data 
+0

謝謝,但沒有更全球的方式來做到這一點:我無法訪問某些第三方模塊的模型和查看代碼 –

+0

請嘗試製作一個[mcve]的實際問題... – Sayse

0

答什麼:我在想,我可以從pre_save訪問FORM信號。正如上面的貢獻者所解釋的那樣,情況並非如此。您只能訪問與表單相關的模型數據。所以在我的情況下,只添加到html表單的字段現在將顯示在pre_save實例中。

我通過創建自定義中間件來解決問題,該中間件可以在任何POST方法上觸發,並檢查分離的html表單字段的存在和內容。