0

我想發送一個對象的一部分到模板。如何只發送一個對象的一部分到django中的模板

我有一個像下面2種型號:

class Person(models.Model): 
    name = models.CharField(max_legth=50) 
    sure_name = models.CharFiled(max_length=50) 

class Office(models.Model): 
    location = models.CharField(max_legth=50) 

,我也創建了類似下面的模型:

class PersonOffice(models.Model): 
    person = models.ForeignKey(Person) 
    office = models.ForeignKey(Office) 

現在,當我從數據庫中的數據,通過PersonOffice.objects.all(),該數據是像如下:

{ 
    { 
     "pk": 0, 
     "person": { 
      "pk":0, 
      "name":"Harry", 
      "sure_name":"Potter" 
      }, 
     "office":{ 
      "pk":5, 
      "location":"Toronto" 
     } 
    }, 
    { 
     "pk": 1, 
     "person": { 
      "pk":6, 
      "name":"John", 
      "sure_name":"Kelly" 
      }, 
     "office":{ 
      "pk":6, 
      "location":"NewYork" 
     } 
    } 
} 

我想render functi只是辦公室發送到模板上。我該怎麼做? 感謝

更新 我想在模板與{% for %}循環使用。例如:

{% for office in Offices %} 
    <p>Office location: {{ office.location }}</p> 
{% endfor %} 

我用下面的代碼:

offices = PersonOffice.objects.all().values('office') 
print(offices) 

和下面是結果在終端:

<QuerySet [{'office': 1}, {'office': 2}, {'office': 11}]> 
+2

您可以發佈您views.py文件,以顯示在您目前正在渲染? – csling

+0

您似乎在發送到模板之前將您的對象序列化,不知道爲什麼 –

+0

沒有。我不會序列化它們。只是爲了在這裏顯示一個好的方式,我將它們顯示爲json格式。 – msln

回答

1

可以使用values

PersonOffice.objects.values('office') 

這將用輸出一個查詢集爲每個對象。

編輯:

PersonOffice.objects.values('office__location') 
+0

謝謝你,我改變了這個問題。通過使用'values()'我不能像'{{office.location}}'那樣使用。有沒有其他方法? – msln

+0

是的,你可以使用。值也輸出一個查詢集。另請參閱我的編輯。 @msln –

+0

我寫了下面這段代碼:'{%for office in offices%} {{office.location}}
{%endfor%}'但是它在呈現之前不會在HTML文件 – msln

相關問題