Django 2型号1表

时间:2012-07-16 21:39:18

标签: django django-models django-forms

所以,我仍然是Django的总菜鸟,我想知道如何做到以下几点:

所以我想说我有类似下面的代码:

class UserProfile(models.Model):
    #Some fields
class UserProfileOther(models.Model):
    #Some other fields that I want in another table for organization
    user_profile = models.OneToOneField(UserProfile)

我现在如何创建包含上述两种模式的表单?

3 个答案:

答案 0 :(得分:3)

这类问题是inline formsets的目的。

答案 1 :(得分:2)

您可以创建两个单独的ModelForm类。但在您看来,您必须为其实例添加前缀。

def viewname(request):
    if request.method == 'POST':
        form1 = forms.YourForm(request.POST, prefix="form1")
        form2 = forms.YourOtherForm(request.POST, prefix="form2")
        if form1.is_valid() and form2.is_valid():
            # process valid forms
    else:
        form1 = forms.YourForm(prefix="form1")
        form2 = forms.YourOtherForm(prefix="form2")

    ....

使用前缀可确保名称相似的字段不会混淆。

答案 2 :(得分:0)

我这样做的方法是基于第一个模型创建一个表单,然后基于继承第一个表单的第二个模型创建一个表单。含义:

类UserProfileForm(ModelForm):        ...

class UserProfileOtherForm(UserProfileForm):        ...

并将UserProfileOtherForm传递给表单模板。它对我有用。不确定是否有更简单的方法。