Ajax 创建两个对象,然后使用单个窗体在这两个对象之间创建关系

Ajax 创建两个对象,然后使用单个窗体在这两个对象之间创建关系,ajax,django,view,model,Ajax,Django,View,Model,您好,我已经创建了一个视图,该视图允许我创建两个共享同一表单的不同模型 我的“成员”模型有一个“成员角色”字段。我想要的是,当正确填写此表单并单击提交后,将创建与“memberrole”模型关联的字段,然后将其分配给共享表单的“member”模型 我似乎不知道该如何完成这项任务。我对web开发比较陌生,使用AJAX会有帮助吗 型号 class MemberRole(models.Model,get_fields): name = models.CharField(max_length =

您好,我已经创建了一个视图,该视图允许我创建两个共享同一表单的不同模型

我的“成员”模型有一个“成员角色”字段。我想要的是,当正确填写此表单并单击提交后,将创建与“memberrole”模型关联的字段,然后将其分配给共享表单的“member”模型

我似乎不知道该如何完成这项任务。我对web开发比较陌生,使用AJAX会有帮助吗

型号

class MemberRole(models.Model,get_fields):
    name = models.CharField(max_length = 20)

    def __unicode__(self): 
        return self.name

class Member(models.Model,get_fields):
    first_name = models.CharField(max_length = 20)
    role = models.ForeignKey(MemberRole, null = True, blank = True)
class MemberForm(forms.ModelForm):
    class Meta:
        model = Member
        exclude = ('role',)

class MemberRoleForm(forms.ModelForm):
    class Meta:
        model = MemberRole
表格

class MemberRole(models.Model,get_fields):
    name = models.CharField(max_length = 20)

    def __unicode__(self): 
        return self.name

class Member(models.Model,get_fields):
    first_name = models.CharField(max_length = 20)
    role = models.ForeignKey(MemberRole, null = True, blank = True)
class MemberForm(forms.ModelForm):
    class Meta:
        model = Member
        exclude = ('role',)

class MemberRoleForm(forms.ModelForm):
    class Meta:
        model = MemberRole
URL片段

url(r'^members', ModelListView.as_view(model = Member,page_name = 'Members',edit_link = 'updatemember/'), name='member-list'),
url(r'^addmember', 'inventory.views.add_member', name = 'member-add'),
查看功能

def add_member(request):

model_url = 'member-add'

if request.method == "POST":
    rform = MemberRoleForm(request.POST, instance=MemberRole())
    mform = MemberForm(request.POST, instance=Member())
    if rform.is_valid() and mform.is_valid():
        new_role = rform.save()
        new_member = mform.save()
        return HttpResponseRedirect('members')
else:
    rform = MemberRoleForm(instance=MemberRole())
    mform = MemberForm(instance=Member())
return render_to_response('create_model.html', {'role_form': rform, 'member_form': mform, 'model_url': model_url,},context_instance=RequestContext(request))
create_model.html的片段

<form action="{% url model_url %}" method="POST">
  {% csrf_token %}

  {% if model_url == 'member-list' %}

    {% for field in member_form %}
    <div class="fieldWrapper">
        {{ field.errors }}
        {{ field.label_tag }} {{ field }}
    </div>
    {% endfor %}
    {% for field in role_form %}
    <div class="fieldWrapper">
        {{ field.errors }}
        {{ field.label_tag }} {{ field }}
    </div>
    {% endfor %}

  {% endif %}
     <input id="save_contact" type="submit" value="Add"/>
</form>

{%csrf_令牌%}
{%if model_url=='成员列表'%}
{form%}成员中字段的%
{{field.errors}}
{{field.label_tag}{{{field}}
{%endfor%}
{角色中字段的%u形式%}
{{field.errors}}
{{field.label_tag}{{{field}}
{%endfor%}
{%endif%}

这里根本不需要Ajax——这并不是它的真正用途

您可以在保存项目时设置关系

if rform.is_valid() and mform.is_valid():
    new_role = rform.save()
    new_member = mform.save(commit=False)
    new_member.role = new_role
    new_member.save()
    return ....