如何在Django中将一个表单字段拆分为模型的多个字段?

时间:2019-07-31 10:26:10

标签: django django-models django-forms django-templates django-views

这个问题类似于

Using multiple input fields for one model's attribute with django

How to render two form fields as one field in Django forms?

我所需要的基本上与MultiValueField相反,在这里我可以将数据从一个表单字段-名称保存到两个模型字段-名字,Lastname 中。我找不到类似MultiValueField的东西。

有人可以建议我这样做的更好方法是什么。

2 个答案:

答案 0 :(得分:1)

为什么不在 Form 中定义name字段,并覆盖save方法以将其保存到模型字段中,如下所示:

class SomeForm(forms.ModelForm):
    name = forms.CharField(max_length=255, required=True)

    class Meta:
        model = YourModel
        fields = ['name', 'and_other_fields']

    def save(self, commit=True)
        instance = super(SomeForm, self).save(commit=False)
        _name = self.cleaned_data.get('first_name').split(' ')
        instance.first_name = _name[0]
        instance.last_name = ' '.join(_name[1:])
        instance.save()
        return instance

答案 1 :(得分:0)

假设,用户将输入名字和姓氏,并用空格分隔。您可以使用此:

u_name = YourModelName()

name = request.POST['name'].split(" ") # give attribute name in html and use that name here
first_name = name[0]
last_name = name[1]

u_name.first_name = first_name
u_name.last_name = last_name

u_name.save()

您可以使用任何方法来保存数据。只需使用split。