Учитывая приложение Django, я должен применить I18N к значениям, хранящимся в таблице «Площадь». Значения поля i18n_code указывают на записи msgid в моей локали/en_US/LC_MESSAGES/django.po.
Как вы можете видеть в моем коде, модель Startup имеет поле ManyToMany для Area. В моей форме область — это виджет CheckboxSelectMultiple. Как я могу получить внутри моего form01.html (шаблон) i18n_code, перейти к {% trans area.i18n_code %}
, чтобы я мог получить параметры, отображаемые на правильном языке?
Я проверил много вопросов по этой теме... но не нашел четкого решения.
Оформить коды:
models.py:
@python_2_unicode_compatible
class Area (models.Model):
name = models.CharField(max_length = 200)
i18n_code = models.CharField(max_length = 200)
def __str__(self):
return self.name
@python_2_unicode_compatible
class Startup (models.Model):
name = models.CharField(max_length = 200)
# ...
areas = models.ManyToManyField(Area, verbose_name = 'Areas')
def __str__(self):
return self.name
form01.html
<div class="row linhaForm">
<div class="col-lg-4 legenda">
<b>{% trans 'FORM_1_LABEL_AREA' %}</b>
<p>{% trans 'FORM_1_LABEL_AREA_DESCRIPTION' %}</p>
</div>
<div class="col-lg-8">
{% for area in form.areas %}
<div class="checkbox">
{{area}} <-------------------- Here is my problem!
</div>
{% endfor %}
</div>
</div>
forms.py
from django.utils.translation import ugettext_lazy as _
class Step1Form(forms.ModelForm):
class Meta:
model = models.Startup
fields = ['name', 'areas']
widgets = {
'areas': forms.CheckboxSelectMultiple(attrs={'onclick':'onAreaCheckHandler()'}),
'name': forms.TextInput(attrs={'class': 'form-control'}),
}
error_messages = {
'name': {
'required': _("FORM_1_ERROR_NAME_REQUIRED")
},
'areas': {
'required': _("FORM_1_ERROR_AREA_REQUIRED")
}
}
def __init__(self, *args, **kwargs):
super(Step1Form, self).__init__(*args, **kwargs)
if self.instance:
self.fields['areas'].queryset = models.Area.objects.all()
Если вы поможете мне с этим сценарием, поможете и с другим, который у меня есть, где я получил CharField с вариантами выбора и поля ForeignKey, отображаемые в теге Select.