嗨 我有一个领域模型,用于Django应用程序,我想在一个表单上展示。我用自定义的ModelForms创建了我的应用程序(没有太多变化,某些字段被排除等)。该模型的依赖关系如下:django带自定义表单的内联表格
Complaint
\
.--- CarInfo
.--- Customer
我的观点功能是这样的:
def make(request):
if request.method == 'POST':
parameters = copy.copy(request.POST)
complaint = Complaint()
carInfo = CarInfo()
customer = Customer()
customer_form = CustomerForm(parameters, instance=customer)
carInfo_form = CarInfoForm(parameters, instance=carInfo)
parameters['complaint_date'] = get_current_date()
parameters['customer'] = 1 # dummy value to allow validation success
parameters['car_info'] = 1 # dummy value to allow validation success
form = ComplaintForm(parameters, instance=complaint)
if form.is_valid() and customer_form.is_valid() and carInfo_form.is_valid():
carInfo_form.save()
customer_form.save()
parameters['customer'] = customer.id
parameters['car_info'] = carInfo.id
form = ComplaintForm(parameters, instance=complaint)
form.save()
return index(request)
else:
form = ComplaintForm()
carInfo_form = CarInfoForm()
customer_form = CustomerForm()
return render_to_response('complaints/make_complaint.html', {'complaint_form' : form, 'customer_form' : customer_form, 'carInfo' : carInfo_form})
我不喜欢这种方法太多了,而且它并不适用于所有环境下工作-thou我没有找到它不工作的原因。我一直在寻找修复这个代码,并发现像内联窗体集(http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets)。这个解决方案似乎没问题,但由于我的表单是自定义的,我可以使用它。
也许有人可以为我提供一些建议,如何妥善解决这种情况。清洁解决方案非常感谢。
编辑 有一种情况是我在这种解决方案不起作用。尽管在外键上设置了虚拟值,但当我调用is_valid()时,我得到FALSE,并显示错误消息说这些字段未设置。我正在用django 1.2.5观察这个问题 - 它发生在服务器上,我打算运行这个应用程序,但是我的笔记本电脑(也是django 1.2.5)没有这个问题。
你可以发布你的模型类和表单吗? – DTing 2011-03-10 10:32:47
答案更新了...... – FallenAngel 2011-03-10 12:10:01