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()
    is
    True
    ,只需执行
    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,基本上是一个用户。感谢您的回答,我们采用了类似的方式。感谢您的回答,我们采用了类似的方式。