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