使用django自动完成灯时,Verbose_name和helptext丢失

时间:2016-10-03 10:33:54

标签: python django django-autocomplete-light

我有以下模型,其中包含一个名为boxnumber的字段 当我不使用DAL时,会出现verbose_name和help_text,并在需要时进行翻译。

但是当添加DAL时(参见下面的模型),它只显示名称,而不是翻译,没有帮助文本。

有什么建议吗?

控制/ models.py:

from django.utils.translation import ugettext_lazy as _

class Command(models.Model):
    ....
    boxnumber = models.ForeignKey(SmartBox, models.SET_NULL, blank=True, null=True,
                                  help_text=_("the Smart Box # on this client"),
                                  verbose_name=_('Box-Number')
                                  )

class CommandForm(ModelForm):
    class Meta:
        model = Command
        fields = [...,
                  'boxnumber',
                  ... ]


    boxnumber = forms.ModelChoiceField(
        queryset=SmartBox.objects.all(),
        widget=autocomplete.ModelSelect2(url='control/boxnumber-autocomplete',
                                         forward=['group'])
    )   # adding this removes help_text and verbose_name

的信息: DAL 3.1.8 Django 1.10.1 Python 3.4

3 个答案:

答案 0 :(得分:2)

对我来说,使用ChoiceField会丢失verbose_name和helptext。

但是ChoiceField不是一个小部件,它是表单字段的东西。将它作为小部件放入Meta会引发错误。

重新打印verbose_name和help_text绝对不是DRY。

这对我有用:

class SearchAddOrUpdateForm(ModelForm):
    priority = forms.ChoiceField(
        choices     = ALL_PRIORITIES,
        label       = Search._meta.get_field('priority').verbose_name,
        help_text   = Search._meta.get_field('priority').help_text )

(我的模型名为Search。)

更干!

答案 1 :(得分:0)

这不是dal特有的。您正在重新设置新的窗口小部件类,因此您需要自己复制help_text和verbose_name。

答案 2 :(得分:0)

您替换了'默认'带有dal小部件的小部件,然后你必须添加' refresh'就像这样

class CommandForm(ModelForm):
class Meta:
    model = Command
    fields = [...,
              'boxnumber',
              ... ]


boxnumber = forms.ModelChoiceField(
    queryset=SmartBox.objects.all(),
    widget=autocomplete.ModelSelect2(
               url='control/boxnumber-autocomplete',
               forward=['group']
    )
    label=_('Box-Number')
    help_text=_("the Smart Box # on this client")
)   # adding this removes help_text and verbose_name

提到: https://docs.djangoproject.com/en/1.11/ref/forms/fields/#label https://docs.djangoproject.com/en/1.11/ref/forms/fields/#help-text