-2
장고 - 싱 싱 양식을 기반으로 2 개의 양식을 만들었습니다.Django - 새 table1.PK 및 table2.PK 및 table2.FK 저장
- Form1이, 내가 조정하고 개방 형태를 바로 저장할 수 있습니다
- Form2를 내가 기존 OrderHeader를 열 때
, 난 헤더와 라인을 참조하십시오 해당 formset에서 OrderLines을 보여줍니다 OrderHeader를 보여줍니다 벌금.
양식을 비우면 OrderHeader에서 고객을 선택한 다음 일부 주문 행을 추가하지만 여기서는 OrderLine이 OrderLine.orderheader에 대한 FK 값이 없으므로 저장할 수 없습니다.
Q : Submit를 누르면 어떻게 OrderHeader.pk를 OrderLine.orderheader에 저장할 수 있습니까?
내 views.py
def orderline_formset(request, id=None):
if id:
orderid = OrderHeader.objects.get(pk=id)
else:
orderid = OrderHeader()
OrderLineFormSet = inlineformset_factory(OrderHeader, OrderLine, OrderLineForm, extra = 1, can_delete=True)
form = OrderHeaderForm(instance=orderid)
formset = OrderLineFormSet(instance=orderid)
helper = OrderLineFormSetHelper()
if request.method == 'POST':
OrderLine.orderheader = orderid
formset = OrderLineFormSet(request.POST,instance=orderid)
if formset.is_valid():
formset.save()
messages.success(request, 'Order saved succesfully!')
else:
messages.error(request, 'Order save error, please check fields below')
else:
formset = OrderLineFormSet(instance=orderid)
return render_to_response("order.html", {'orderform' : form,'formset': formset, 'helper': helper},
context_instance=RequestContext(request))
내 forms.py
class OrderHeaderForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(OrderHeaderForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.form_tag = False
class Meta:
model = OrderHeader
class OrderLineForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(OrderLineForm, self).__init__(*args, **kwargs)
class Meta:
model = OrderLine
class OrderLineFormSetHelper(FormHelper):
def __init__(self, *args, **kwargs):
super(OrderLineFormSetHelper, self).__init__(*args, **kwargs)
self.form_method = 'post'
self.template = 'bootstrap3/table_inline_formset.html'
self.render_required_fields = True
self.form_tag = False