我有一个表单,代表所选产品的列表,其中每个产品都从选择框中选择。选择框选择产品的PK,但显示 PK +产品的名称,例如:E12 - Valve
或E58 - Rotary nozzle
。现在,我的具体情况是我为用户选择了一组预定义的产品,用户不能偏离这些产品选择。因此,用户无法更改所选产品。此外,此产品形式为inlineformset_factory
,而非主要形式。
我显示的产品形式如下:
<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 }}