2013-01-31 95 views
0

我有一個表單,它表示選定產品的列表,其中每個產品都是從選擇框中選擇的。選擇框選擇產品的PK,但顯示 PK +產品的名稱,如:E12 - ValveE58 - Rotary nozzle。現在,我的具體情況是,我爲用戶選擇了一組預定義的產品,並且用戶不能偏離此選擇的產品。因此,用戶不能夠改變選擇的產品。此外,這種產品形式是inlineformset_factory,而不是主要形式。django - 只顯示選擇框的值,沒有選擇框

我展示我的產品形式是這樣的:

<table class="field_container" id="prodTable"> 
    <tr><th></th><th>CID</th><th>Qty</th></tr> 
    {{ pform.management_form}} 
    {% for form in pform %} 
    <tr class="pform_set"> 
     {% for field in form %} 
     <td class="product-item">{{ field }} {% if field.errors %} {{ field.errors }} {% endif %} </td> 
     {% endfor %} 
    </tr> 
    {% endfor %} 
</table> 

如果我改變{{ field }}{{ field.value }}然後我得到的是E12這是國外模式的PK。但是,我需要它顯示E12 -- Valve。有沒有辦法做到這一點?

+0

顯示您的看法,謝謝。 –

回答

1

聽起來像custom template tag可能工作。喜歡的東西 -

from your_module import Product 

def get_product_string(value): 
    try: 
     product = Product.objects.get(pk=value); 
     return value + " -- " + product.name 
    except DoesNotExist: 
     return value 

然後改變你的模板,而不是{{ field.value }}你可以做{{ field.value|get_product_string }}

+0

也許最好趕上具體的例外,那就是** DoesNotExist **異常 –

+0

好吧,我已經更新了我的答案,以捕獲特定的異常。謝謝@ bosco。 –

相關問題