通过组合其他表单(如邮寄地址)构建表单

时间:2014-08-27 18:06:11

标签: django django-allauth

所以我有一个应用需要以不同的形式存储大量地址。我建立了一个地址模型(街道,城市,邮编,州等)。因此,不必在每个需要和解决的模型中重复这些,我只需添加一个FK - >地址。

我还从地址模型中创建了一个ModelForm。

无论如何都要做这样的事情?

class ContactForm(forms.Form):

  name = forms.CharField()
  phone = forms.CharField()
  address = [Fields from my Address ModelForm]

我不能使用formset,因为我在一个特定模块的类(all-auth)中这样做。我所能做的就是声明表单字段并定义“注册”功能。 All-Auth正在做其余的事情。

class SignupForm(forms.Form):
    first_name = forms.CharField(max_length=30, label='Voornaam')
    last_name = forms.CharField(max_length=30, label='Achternaam')

    [Need to declare my address form here]

    def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.save()

1 个答案:

答案 0 :(得分:0)

Django是Python,因此您可以从另一个表单中获得一个表单inherit。像这样:

class AddressForm(forms.Form):
    class Meta:
        model = Address
        fields = ['street', 'city', 'zip']

class ContactForm(AddressForm):
    # inherits fields from Addressform
    name = forms.CharField()