我需要动态的形式运行时使用AJAX添加到我的表单集,为此,我指的是动态添加一种形式Django的表单集与阿贾克斯
我有不同的前缀相同的页面上的多个表单集。
我的机型设计,像这样:一个用户可以有许多手机。 一个电话就可以有许多行(如果需要详细信息) 访问多对多“到”在表单集的关系字段
一旦用户增加了一个新的手机,我用ajax储存的电话。 该视图是如下
def addUserPhone(request, customer_id, location_id, user_id, **kwargs):
error_msg = u"No POST data sent."
context = {}
if request.is_ajax():
if request.method == "POST":
user = End_User.objects.get(id=user_id)
phone_client = PartialPhone_ClientForm(request.POST, prefix='new_client')
instance = phone_client.save()
#associate user to a phone
instance.end_user.add(user)
#Creating an empty lineFormset for a phone
LineFormSet = modelformset_factory(Line, form=Line_Form, can_delete=True)
client_lines = LineFormSet(queryset=Line.objects.none(), prefix='phone_client_'+str(instance.id))
# how to return the two objects instance and client_lines back to the template??
#format = 'json'
#mimetype = 'application/javascript'
#data = serializers.serialize(format, [instance])
#return HttpResponse(data)
#can we return as a context?? this gives me only a string "phoneline_set" in the template
context['phone'] = instance
context['line_set'] = client_lines
return HttpResponse(context)
else:
error_msg = u"Insufficient POST data (need 'Name ' and 'Telephone Number'!)"
else:
error_msg = "Non Ajax"
return HttpResponseServerError(error_msg)
什么是现在回电话实例的最佳方式,并LineFormSet回在模板渲染视图?
如果我只是返回一个背景下,我认为只得到字符串“phoneline_set”。 但我想这样做
$.post("addUserPhone/",phoneData,function(data){
$('.scroll').append("<h2> {{ line_set }} </h2>")
});
如果我使用序列化JSON和通过我怎么能传递LineFormSet并在模板中使用它? 目前,如果我尝试序列我client_lines表单集我得到的错误AttributeError的:“LineFormFormSet”对象有没有属性“_meta”
任何帮助表示赞赏,谢谢!