Показать форму в шаблоне - PullRequest
       2

Показать форму в шаблоне

1 голос
/ 25 февраля 2012

У меня есть эти модели:

class Supplier(models.Model):
    name = models.CharField(max_length=50)

    def __unicode__(self):
        return u"%s" % self.name

class SupplierOrder(models.Model):
    supplier = models.ForeignKey(Supplier)
    numero_invoice = models.CharField(max_length=50)

У меня есть эта форма:

class SupplierOrderForm(forms.ModelForm):
    class Meta:
        model = SupplierOrder

Передайте форму заказа поставщика шаблону, в котором у меня есть этот код:

<table>
{% for f in forms %}
    {% for field in f.visible_fields %}
        <tr>
            <td>{{ field.label_tag }}</td>
            <td>{{ field.value }}</td>
        </tr>
    {% endfor %}
{% endfor %}

Проблема в том, что для поставщика отображается идентификатор поставщика, но я хочу указать имя поставщика.

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Добавьте __unicode__ метод к вашей модели:

class Supplier(models.Model):
    name = models.CharField(max_length=50) 

    def __unicode__(self):
        return u"%s" % self.name
0 голосов
/ 26 февраля 2012

Это значение field этого цикла является экземпляром BoundField:

{% for field in f.visible_fields %}

Вы можете получить значение экземпляра BoundField следующим образом:

boundfield.field.to_python(boundfield.value())

Чтобы вы могли создать простой шаблонный фильтр :

from django import template

register = template.Library()

@register.filter
def to_python(boundfield):
    return boundfield.field.to_python(boundfield.value())

И используйте это в своем шаблоне:

{% load your_template_tags %}

{% for field in form.visible_fields %} 
    <tr>
        <td>{{ field.label_tag }}</td>
        <td>{{ field|to_python }}</td>
    </tr>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...