私はDjangoを初めて使いました。私はビューで関連モデルを印刷しようとしています。私は、DB自体がキーなどを含めて正しく設定されていることを確信しています。テーブルには、再生するデータがあります。私には分かりません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 %}
最終結果は、投票者名のリストであり、電話番号はありません。私は何が欠けていますか?
EDIT:ローカルデータベースを作成し、django移行を生成して実行し、ダミーデータを挿入しました。私はまだ電話番号がありません。
テンプレートでこれらの電話機を反復処理する構文は何ですか? – whiterook6
あなたのテンプレートは正常に見える、それを変更する必要はありません。 –
私は偶然にメタブロックをコピー&ペーストしませんでしたが、そこにあります。 'ManyToManyField'オブジェクトにvoter.phones.allの電話機用テンプレートの行に '_m2m_reverse_name_cache'属性がないというテンプレート自体からエラーが発生しました。 – whiterook6