django: извлечение объекта через обратную связь в view.py, а не в шаблоне - PullRequest
0 голосов
/ 16 февраля 2012

Я только начинаю программировать на python, и у меня возникает следующая проблема.У меня есть шаблон, который показывает подробную информацию о поставщике, у каждого поставщика есть сотрудники, а на странице шаблона я хочу показать имена сотрудников.Я знаю, как сделать это в шаблоне, но как это сделать в представлении?

МОДЕЛИ:

class Supplier(models.Model):
    co_name = models.CharField(max_length=100)
    co_city = models.CharField(max_length=100)
    co_state = models.CharField(max_length=2)

class Supplieremployees(models.Model):
    supplier = models.ForeignKey(supplier)
    expe_fname = models.CharField(max_length=50)

ВИДЫ:

def supplier_detail(request, supplier_id):
    s = get_object_or_404(Supplier, pk=supplier_id)
    **test = s.supplieremployees_set.all()**
    return render_to_response('suppliersdb/supplier_detail.html', {'supplier': s})

ШАБЛОН:

...i dont want to use this way, how do i translate this into the view?
{% for supplieremployees in supplier.supplieremployees_set.all %}
    <li>IT Focal: {{ supplieremployees.expe_fname }}</li>
{% endfor %}

**TEST: {{ test.expe_fname }}**

ничего не отображается для {{test.expe_fname}}

Ответы [ 2 ]

1 голос
/ 16 февраля 2012
def supplier_detail(request, supplier_id):
    s = get_object_or_404(Supplier, pk=supplier_id)
    for employee in s.supplieremployees_set.all():
        print employee.expe_fname
    return render_to_response('suppliersdb/supplier_detail.html', {'supplier': s})

из документов

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

Объект Supplier будет иметь свойство supplieremployees_set, которое может обращаться к обратному отношению:

employees = s.supplieremployees_set

Вы также можете предоставить related_name аргумент для ForeignKey и использовать его:

class Supplieremployees(models.Model):
    supplier = models.ForeignKey(Supplier, related_name='employees')

employees = s.employees
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...