所以,我仍然是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)
我现在如何创建包含上述两种模式的表单?
答案 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
传递给表单模板。它对我有用。不确定是否有更简单的方法。