2013-10-21 88 views
2

如何在formset驗證之前防止模型保存?代碼爲例:在formset驗證之前防止模型保存

form = StockMovementForm(data=data) 
Formset = inlineformset_factory(StockMovement, StockMovement.products.through, extra=2, can_delete=False) 
if form.is_valid(): 
    stock_movement = form.save() 
    formset = Formset(data=data, instance=stock_movement) 
    if formset.is_valid(): 
    formset.save() 

(StockMovementForm用於創建一個新的* stock_movement *)

我想保存形式表單集的檢查有效性後。

我發現是這樣的:

form = StockMovementForm(data=data) 
Formset = inlineformset_factory(StockMovement, StockMovement.products.through, extra=2, can_delete=False) 
formset = Formset(data=data) 
if form.is_valid(): 
    if formset.is_valid(): 
    stock_movement = form.save() 
    objects = formset.save(commit=False) 
    for object in objects: 
     object.movement = stock_movement 
     object.save() 

但我不知道這是否是一個很好的方式(發現here)。

+0

你編輯stock_movement'的'現有實例或創建一個新的? – Brandon

+0

這是一個新的stock_movement對象。我編輯該細節的問題。 – bux

+0

嗯。使用嵌入式表單時,您需要使用相關模型的實例...您究竟想要做什麼? – Brandon

回答

3

我會檢查表格的有效性和表單集這樣:

form = StockMovementForm(data=data) 
Formset = inlineformset_factory(StockMovement, 
    StockMovement.products.through, extra=2, can_delete=False) 
formset = Formset(data=data) 
if form.is_valid() and formset.is_valid(): 
    stock_movement = form.save() 
    objects = formset.save(commit=False) 
    for object in objects: 
     object.movement = stock_movement 
     object.save()