django - 只显示选择框值,没有选择框

时间:2013-01-31 17:43:13

标签: django django-forms

我有一个表单,代表所选产品的列表,其中每个产品都从选择框中选择。选择框选择产品的PK,但显示 PK +产品的名称,例如:E12 - ValveE58 - 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。有没有办法做到这一点?

1 个答案:

答案 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 }}