Ajax 创建两个对象,然后使用单个窗体在这两个对象之间创建关系
您好,我已经创建了一个视图,该视图允许我创建两个共享同一表单的不同模型 我的“成员”模型有一个“成员角色”字段。我想要的是,当正确填写此表单并单击提交后,将创建与“memberrole”模型关联的字段,然后将其分配给共享表单的“member”模型 我似乎不知道该如何完成这项任务。我对web开发比较陌生,使用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 =
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 ....