【问题标题】:Verbose_name and helptext lost when using django autocomplete light使用 django 自动完成灯时,verbose_name 和 helptext 丢失
【发布时间】:2016-10-03 10:33:53
【问题描述】:

我有以下模型,其中包含一个名为 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

信息: 达尔 3.1.8 Django 1.10.1 Python 3.4

【问题讨论】:

    标签: python django django-autocomplete-light


    【解决方案1】:

    您将“默认”小部件替换为 dal 小部件,然后您必须像这样添加“刷新”它

    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

    【讨论】:

      【解决方案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。)

      更干燥!

      【讨论】:

        【解决方案3】:

        它不是特定于 dal 的。您正在重新实例化一个新的小部件类,因此您需要自己复制 help_text 和 verbose_name。

        【讨论】:

          猜你喜欢
          • 2022-01-13
          • 1970-01-01
          • 2021-05-19
          • 1970-01-01
          • 1970-01-01
          • 2016-07-02
          • 2021-08-22
          • 1970-01-01
          • 2022-01-03
          相关资源
          最近更新 更多