使用django-translations以表格形式显示所有语言

时间:2019-10-23 09:02:35

标签: django django-i18n

我正在使用django-translations来翻译模型的某些字段。 使用Django Admin,我可以输入翻译内容,并且前端的表单会显示匹配的语言值。

但是我想为每种语言显示与Django Admin相似的字段,只是我不想为非翻译语言手动添加字段。

因此,如果我有en (default)de语言,我想将titletitle_entitle_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']

1 个答案:

答案 0 :(得分:0)

根据文档,您应该可以使用ModelForms