2017-07-14 68 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