我正在使用django-translations来翻译模型的某些字段。 使用Django Admin,我可以输入翻译内容,并且前端的表单会显示匹配的语言值。
但是我想为每种语言显示与Django Admin相似的字段,只是我不想为非翻译语言手动添加字段。
因此,如果我有en (default)
和de
语言,我想将title
或title_en
和title_de
输出为字段。
我尝试自己添加翻译字段,例如title_de
进入模型,布局和元类,但这没有用。
如何同时显示不同语言的所有字段?
模型
class Category(Translatable, MPTTModel):
title = models.CharField(max_length=200)
slug = models.SlugField()
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
class Meta:
# enforcing that there can not be two categories under a parent with same slug
unique_together = ('slug', 'parent',)
class MPTTMeta:
order_insertion_by = ['title']
class TranslatableMeta:
fields = ['title', 'slug']
表格
class CategoryForm(forms.ModelForm):
use_required_attribute = False
title = forms.CharField(max_length=200)
slug = forms.SlugField(help_text=_('Will be generated automatically from the title'))
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.form_method = 'post'
self.helper.form_action = '.'
self.helper.form_class = 'form-horizontal form-bordered'
self.helper.label_class = 'col-lg-3'
self.helper.field_class = 'col-lg-8'
self.helper.layout = self.__get_layout()
super().__init__(*args, **kwargs)
self.fields['title'].required = True
self.fields['slug'].required = True
@staticmethod
def __get_layout():
layout = Layout(
Field('title'),
Field('title_de'),
Field('slug', readonly=''),
ButtonHolder(
Submit('submit', _('Save'))
)
)
return layout
def clean(self):
cleaned_data = super().clean()
return cleaned_data
class Meta:
model = Category
fields = ['title', 'slug']