2013-01-31 94 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。 –

相关问题