Djangoアプリには2つのデータテーブルがあります。1つは出荷船の詳細を含み、もう1つは個々の船に関連するオファーを含みます。私のモデルは次のとおりです。
class Vessel(models.Model):
name = models.CharField(max_length=64)
image = models.CharField(max_length=64)
vesseltype = models.ForeignKey(VesselType)
capacity = models.IntegerField()
length = models.FloatField()
beam = models.FloatField()
speed = models.IntegerField()
activities = models.CharField(max_length=256)
category = models.IntegerField()
display_order = models.IntegerField()
published = models.BooleanField()
def __unicode__(self):
return self.name
class Offer(models.Model):
vessel = models.ForeignKey(Vessel)
description = models.CharField(max_length=128)
date = models.DateField()
duration = models.IntegerField()
itinerary = models.TextField()
price = models.IntegerField()
display_order = models.IntegerField()
link = models.URLField()
published = models.BooleanField()
def __unicode__(self):
return self.description
私のviews.pyには、次のコードがあります。
def home(request):
vessels = Vessel.objects.filter(published='y').order_by('display_order')
offers = Offer.objects.filter(vessel__published__exact='y').filter(published='y').order_by('display_order')
t = loader.get_template('index.html')
c = Context({
'vessels' : vessels,
'offers' : offers,
})
テンプレートでは、それぞれが船舶名、船舶の詳細の一部、およびその船舶に関連するオファーの数を含む複数のdivを表示する必要があります。
オファーを各船舶にリンクしようとするクエリを確認しました。また、テンプレートのループコード内で船舶名を識別して、vessel.idとoffer.vesselが一致する場合にオファーを表示することも試みました。
これまでのところ、クエリ側でエラーが発生し、テンプレートを使用して船舶名とオファーのリストを分離するだけでは、何も成功していません。この情報を結合して、テンプレートで次のようなものを使用できるようにするにはどうすればよいですか。
for offer in offers:
offer.vessel.name
offer.vessel.category
offer.description
offer.price
または私はあまりにも期待していますか?数時間これにいて、ドキュメントで解決策を見つけることができませんが、それはおそらく明白です。クエリ、ビューコード、またはテンプレートを変更しても問題ありません。