【问题标题】:Is There A Way That Client Can Add Language Specific Inputs?有没有一种方法可以让客户添加特定语言的输入?
【发布时间】:2021-06-11 07:37:10
【问题描述】:

我想从我的客户那里获取语言输入。例如:

<input type="text" name="title" class="form-control" required="" id="en"> # For English Input
<input type="text" name="title" class="form-control" required="" id="fr"> # For French Input
<input type="text" name="title" class="form-control" required="" id="es"> # For Spanish Input

我想将它们作为字典存储为 { 'lang' : 'title', 'lang2' : 'title2', 'lang3' : 'title3' } 对。我使用 Django 作为我的后端。有没有办法可以用 Django 表单做到这一点?

编辑: 我试过了,但它似乎不起作用

    def get_title(request):
        title = {}
        if request.method == 'POST':
            form = AddFoodCategoryForm(request.POST)
            if form.is_valid():
                title = { 'fr' : form.cleaned_data.get('Français') }
                title = { 'en' : form.cleaned_data.get('English') }
                title = { 'ru' : form.cleaned_data.get('Pусский') }
                form['title'] = title
                form.save()

【问题讨论】:

  • 为什么所有输入都使用相同的名称?为每个输入使用不同的名称(如title_entitle_frtitle_sp)。然后你可以通过form.cleaned_data['title_en'](例如)获得你想要的输入。
  • 如何保存数据?如果我想进行三个输入,我最终将在数据库中创建三列。我希望它们也像 { 'lang' : 'title', 'lang2' : 'title2', 'lang3' : 'title3' } 一样存储在数据库中。 (对不起,我对 django 很陌生)
  • 如果您使用的是 postgres 数据库,json field 可用于以您想要的格式存储数据。
  • 我明白这一点,但我的问题是如何在不创建新列的情况下在 html 上添加更多输入?
  • 请参阅documentation 以了解如何处理表单。例如,您可以写lang_en=forms.CharField(max_length=2)

标签: python-3.x django django-forms


【解决方案1】:

我将此添加到 forms.py 中:

def clean(self):
    if self.is_valid():
       title = { "fr" : self.cleaned_data.get("Français"),
                 "en" : self.cleaned_data.get("English"),
                 "ru" : self.cleaned_data.get("Pусский") }
       self.cleaned_data['title'] = title

它奏效了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    相关资源
    最近更新 更多