django向模型表单添加字段
下面是我的模型django向模型表单添加字段,django,django-forms,Django,Django Forms,下面是我的模型 class OrgStaff(BaseModel): user = models.OneToOneField(User) member_type = models.BooleanField(help_text="1. Read/Write 0. Read Only") task = models.ForeignKey(ToDos, null=True, blank=True) org = models.ForeignKey(Org) # T
class OrgStaff(BaseModel):
user = models.OneToOneField(User)
member_type = models.BooleanField(help_text="1. Read/Write 0. Read Only")
task = models.ForeignKey(ToDos, null=True, blank=True)
org = models.ForeignKey(Org)
# TODO Add possible activities
def __unicode__(self):
return self.user.username
以下是表格文件
class AddStaffForm(ModelForm):
class Meta:
model = OrgStaff
exclude = (
'task',
'org'
)
这就是我处理视图的方式
if request.POST and form.is_valid():
form.save()
ret_url = reverse("some_view", kwargs={
'var':var,})
return redirect(ret_url)
return render(request, "form.html", {"form":form})
此表单将呈现一个下拉列表,其中将显示数据库中的所有用户,以及一个广播框
但实际上,我想创建表单,这样我可以添加一个新用户(名字、姓氏、用户名、电子邮件和密码),然后添加abvoe AddStaffForm中的其余字段
所以问题基本上归结为向addstaffform添加userform字段。
然后将它们处理到视图中
这是可行的,还是我必须手动完成
是否可以扩展上述模型表单,以便我可以首先填写用户详细信息,然后为他指定类型
请让我知道,谢谢。使用两个单独的表单-
UserForm
,由模型创建。User
&AddStaffForm
但不包括AddStaffForm中的“User”字段。对这两个按钮只使用一个提交按钮
因此,您的模板将如下所示:
<form method="post" action="/path/to/wherever">
{{ user_form }}
{{ add_staff_form }}
<button>Submit</button>
</form>
{{user_form}}
{{add_staff_form}}
提交
然后,当用户提交表单时,按照以下顺序独立处理每个表单:
user
实例保存到数据库中。如果user\u form.is\u valid()
AddStaffForm
但传递commit=False
(即staff=add\u staff\u form.save(commit=False)
,因为它还不包含user
字段的值。使用staff.user=user
然后staff.save()提供用户值
add\u staff\u form.is\u valid()
否则True
),这将导致创建一个新的staff
实例写入数据库
希望这有帮助。使用两个单独的表单-
UserForm
,由模型创建。User
&AddStaffForm
但不包括AddStaffForm中的“User”字段。两个表单只使用一个提交按钮
因此,您的模板将如下所示:
<form method="post" action="/path/to/wherever">
{{ user_form }}
{{ add_staff_form }}
<button>Submit</button>
</form>
{{user_form}}
{{add_staff_form}}
提交
然后,当用户提交表单时,按照以下顺序独立处理每个表单:
user
实例保存到数据库中。如果user\u form.is\u valid()
isTrue
,只需执行user=user\u form.save()
AddStaffForm
但传递commit=False
(即staff=add\u staff\u form.save(commit=False)
,因为它还不包含user
字段的值。使用staff.user=user
然后staff.save()提供用户值
add\u staff\u form.is\u valid()
否则True
),这将导致创建一个新的staff
实例写入数据库
希望这有帮助。如果你所说的类型是指
member\u type
那么不,任何其他型号,不。你必须为此做一些javascript。类似这样的事情:更新,我的基本问题是为用户添加字段(firstname、lastname、email、username、password等)对于上面的模型表单,并能够在单个视图中自动处理数据。这将创建OrgStaff,基本上是一个用户。如果您所说的类型是指member\u type
,那么不,任何其他模型,不。您必须为此执行一些javascript。类似于:更新,我的基本问题是为用户添加字段(firstname、lastname、email、username、password等)并能够在单个视图中自动处理数据。这创建了OrgStaff,基本上是一个用户。感谢您的回答,我们采用了类似的方式。感谢您的回答,我们采用了类似的方式。