2010-12-08 37 views
0

我有以下的Django模型工作:與外鍵關係中的多個對象inlineform_set

class Order: 
    order_id 
    order_date 
class OrderItem 
    models.ForeignKey(Order) 
    models.ForeignKey(Product) 
    quantity 
    unit_price 

爲了解釋,一個訂單可以包含多個訂單項目。

現在,我想創建一個允許創建訂單的模板。所以,在我看來,我的功能有以下幾點:

def new_order: 
    order = Order() 
    OrderItemFormSet = inlineformset_factory(Order, OrderItem, extra=2) 
    formset = OrderItemFormSet() 
    cntx = {'formset': formset, 'order':order} 
    return render_to_response('some_page.html', cntx) 

在模板本身,我遍歷在該formset的形式和一切似乎工作意味着我能夠創建多個訂單項目的訂單。

現在,我創建了一個名爲Product的新模型。新的產品模型將成爲OrderItem模型的一部分。所以我們爲了項目包含與其他指標,如數量,單價等

class Product: 
    product_code 
    product_name 

下沿的產品,我更新了以下行OrderItem的模型:

product = models.ForeignKey(Product) 

我現在面臨的問題是如何在模板中處理上述場景。添加產品模型之前,for循環它迭代該formset是這樣的:

{% for form in formset %} 
    <td> {{form.quantity}} </td> 
    .... 
{%endfor%} 

現在,理想情況下,我以爲我會這樣:

{% for form in formset %} 
    <td> {{form.quantity}} </td> 
    <td> {{form.product.code}} </td> 
    .... 

但上面不起作用。基本上,我想要實現的目的是能夠在爲訂單創建訂單項目時添加產品代碼。保存後,訂單項應與用戶輸入的產品代碼的相應產品ID一起保存。

任何洞察力將不勝感激。

謝謝...

回答

0

你不能有多重嵌套的表單集。但你在這裏不需要它們。您真正想要的是orderitem表格有一個product字段,它是所有可用產品及其代碼的選擇框。只要您定義產品型號的__unicode__方法以返回產品代碼,然後在模板中使用form.product,就可以自動獲得。