2017-07-14 52 views
0

我似乎無法重新標記窗體的ModelChoiceField中的空標籤。 我試過了。 (注意:我使用Django香脆表格形式佈局 - 不應該與此干擾)django無法在TypedChoiceField中重新標記空標籤

Forms.py

class PaymentForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     self.fields['payment_day'].empty_label = 'test something' 
     self.helper = FormHelper(self) 
     self.helper.label_class = 'sr-only' 
     self.helper.form_tag = False 
     self.helper.layout = Layout(
      ...... 
      PrependedText('payment-day', '<i class="fa fa-calendar"></i>', placeholder="What"), 
     ) 

    class Meta: 
     model = DirectDebit 
     fields = [ 
        ...... 
        'payment_day', 
        ] 

models.py

class DirectDebit(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    ...... 

    DAYS_OF_MONTH_CHOICES = [(i, i) for i in range(32)] 
    payment_day = models.IntegerField(choices=DAYS_OF_MONTH_CHOICES) 

    time_stamp = models.DateField(auto_now=True) 
+0

更新標題正確名稱,而不是ModelChoiceField – Yunti

回答

0

與解決:

self.fields['payment_day'].choices = [('', '---- Please select your payment day ----')] + list(
      self.fields['payment_day'].choices[1:]) 
0

到時候你設置empty_label它可能爲時已晚,因爲該領域的選擇已經被計算出來。嘗試將查詢集重新分配給自身,以查看是否觸發了要重新計算的選擇。

super().__init__(*args, **kwargs) 
self.fields['payment_day'].empty_label = 'test something' 
self.fields['payment_day'].queryset = self.fields['payment_day'].queryset 
+0

謝謝TypedChoiceField,目前我得到一個'TypedChoiceField「對象有沒有屬性」 queryset''錯誤 – Yunti

+0

你把ModelChoiceField你問題標題,所以我認爲它是一個ModelChoiceField。 TypedChoicdFields甚至沒有empty_label選項。 – Alasdair