2013-03-09 27 views
38

私は会場を持っていますが、この会場には多くのイベントがあります。私のモデルは次のようになります:外部キーのDjango逆引き

class Event(models.Model): 
    title = models.CharField(max_length=200) 
    date_published = models.DateTimeField('published date',default=datetime.now, blank=True) 
    date_start = models.DateTimeField('start date') 
    date_end = models.DateTimeField('end date') 
    def __unicode__(self): 
     return self.title 
    description = models.TextField() 
    price = models.IntegerField(null=True, blank=True) 
    venue = models.ForeignKey(Venue) 

class Venue(models.Model): 
    title = models.CharField(max_length=200) 
    date_published = models.DateTimeField('published date',default=datetime.now, blank=True) 
    venue_latitude = models.CharField(max_length=200) 
    venue_longitude = models.CharField(max_length=200) 
    venue_address = models.CharField(max_length=200) 
    venue_city = models.CharField(max_length=200) 
    venue_state = models.CharField(max_length=200) 
    venue_country = models.CharField(max_length=200) 
    description = models.TextField() 
    def __unicode__(self): 
     return u'%s' % (self.title) 

特定の会場で起こっているすべてのイベントを表示したいと思います。どうやってやるの?現在のビューは次のようになります。

def detail(request, venue_id): 
    venue = get_object_or_404(Venue, pk=venue_id) 
    return render(request, 'venue-detail.html', {'venue': venue}) 
+0

は、これらのフィールドは関連していますどのようなモジュール(最初の回答にコメントでこれを追加することはできませんか)? – donkeyboy72

+0

実際には、これらの2つのモデルは、それぞれ独自のアプリであり、私はちょうどポイントを説明するためにそれらを一緒に投稿しました:) – FLX

答えて

55

あなたはマネージャーから要素を取得するためにすべてを追加

「『RelatedManager』オブジェクトが反復可能ではありません」持っている人にDjango documentation

+0

Great!ありがとう。しかし、私がイベントで(イベントのために)反復したいのであれば、 "'RelatedManagerのオブジェクトは反復可能ではありません。" – FLX

+0

、それをQueryObjectに変更するだけです。ありがとう! – FLX

+0

どのようにQueryObjectに変更しましたか? – mp3por

3

他の方法で行ってください。 Eventモデルを使用してください。

def detail(request, venue_id): 
    venue = Event.objects.filter(venue__id=venue_id) 
    return render(request, 'venue-detail.html', {'venue': venue}) 

PS:私は一度もget_object_or_404()を使用していません。それに応じてコードを修正します。

+0

この会場で起こっている会場のタイトルとすべてのイベントを表示するためにテンプレートで何を使用できますか?テンプレート内の – FLX

+0

は、{{event.venue.title}}を使用するか、{{venue.venue.title}} {{venue}内の%%} {{i.venue.title}} ' – rjv

+0

私はそれを得るが、この会場で起こっているすべてのイベントをどのように表示するのだろうか? – FLX

3

を参照してください他の道を行くためにevents = venue.event_setを使用することができます。

{% for area in world_areas.all %} 

https://stackoverflow.com/a/16909142/2491526 あまりにも説明= models.TextField()