2012-02-15 1 views
0

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

МОДЕЛИ:

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

ответ

1
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}) 

from the docs

+0

haha, все ответы касаются важной точки обратных отношений: получение отношения, изменение имени отношения, использование запроса, возвращаемого отношением, и итерация через него. –

+0

Я предполагаю, что им нужен синтаксис для ввода представление, чтобы это произошло без получения ошибки – thedeepfield

+0

, оно должно работать точно так же, как в шаблоне, за исключением того, что вам нужно убедиться, что вы поставили набор круглых скобок на конце всего - как в приведенных выше примерах. Если это не работает, есть что-то еще не так, и вам нужно опубликовать сообщение об ошибке –

1

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

employees = s.supplieremployees_set 

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

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

employees = s.employees 

 Смежные вопросы

  • Нет связанных вопросов^_^