我是Django的新手,我試圖在相關視圖中打印相關模型。我很確定數據庫本身的設置是否正確,包括密鑰等,表中有數據可供使用。我不確定的是如何遍歷django模板中的相關對象列表?
- 我是否將模型連接到正確的表名和列名?
- 我爲每個選民加載手機嗎?
- 如何迭代關係本身?
我可以得到選民信息本身,但沒有任何我嘗試與相關Phone
模型的作品。
表:
voters:
id int primary key
first_name varchar
phones:
id int primary_key
phone_number varchar
voter_phones:
voter_id FK
phone_id FK
型號:
from django.db import models
class Phone(models.Model):
phone_number = models.CharField(max_length=255)
class Meta:
db_table = 'phones'
class Voter(models.Model):
first_name = models.CharField(max_length=255)
phones = models.ManyToManyField('Phone', through='VoterPhone', related_name='voters', through_fields=('voter_id', 'phone_id'))
class Meta:
db_table = 'voters'
class VoterPhone(models.Model):
voter = models.ForeignKey('Voter', related_name='voter_phones')
phone = models.ForeignKey('Phone', related_name='voter_phones')
class Meta:
db_table = 'voter_phones'
的視圖:
def results(request):
voters = Voter.objects.all()
return render(request, 'site/results.html', {'voters': voters})
模板:
{% for voter in voters %}
{{ voter.first_name }}
{% for phone in voter.phones_set.all %}
{{ phone.phone_number }}
{% endfor %}
{% endfor %}
最終結果是選民姓名列表,沒有電話號碼。我錯過了什麼?
編輯:我創建了一個本地數據庫,生成並運行django遷移,並插入一些虛擬數據。我仍然沒有電話號碼。
我將在模板中使用什麼語法來遍歷這些電話? – whiterook6
你的模板看起來很好,不需要改變它。 –
我沒有意外複製和粘貼元塊,但它在那裏。我從模板本身收到一個錯誤消息,說'ManyToManyField'對象在模板的行中沒有屬性'_m2m_reverse_name_cache',在voter.phones.all中爲手機。 – whiterook6