2012-02-15 56 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

哈哈,所有的答案都觸及了一個反向關係的重要點:獲取關係,改變關係的名稱,使用關係返回的查詢集並遍歷它。 – 2012-02-15 23:21:01

+0

我想我要找的是要輸入的語法在沒有出現錯誤的情況下發生這種情況的視圖 – thedeepfield 2012-02-15 23:24:00

+0

它應該像在模板中一樣工作,除了需要確保將所有圓括號放在所有末尾之外 - 就像上面的示例一樣。如果這不起作用還有其他問題,你需要發佈錯誤 – 2012-02-15 23:25:33

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 
相關問題