2

データベースから html テンプレートへのクエリを表示する次のステップに行き詰まっています。基本的な情報を入力することはできますが、外部キー クエリで行き詰まりました。

ここに私のコードのサンプルがあります:

これが私のモデルです:

class Player_Bios(models.Model):
    my_id            = models.SlugField(unique=True)
    player_id        = models.IntegerField(primary_key=True, max_length=50)    
    name             = models.CharField(max_length=50) 
    last             = models.CharField(max_length=50)

    def __unicode__(self):
       return self.player_id

class BatStat (models.Model):
    player_id           = models.ForeignKey('Player_Bios')
    team_id             = models.ForeignKey('Team')
    bat_stat_id         = models.CharField(max_length=50, unique=True)
    sport_code           = models.CharField(max_length=50, blank=True) 
    ab                  = models.IntegerField(max_length=50, null=True)

def __unicode__(self):
    return self.bat_stat_id

私の見解:

def SpecificPLayer(request, playerslug):
   player = Player_Bios.objects.get(player_id=playerslug) #this is the name, last and it is working fine
   playerStat = BatStat.objects.filter(player_id=playerslug) #Here I'm calling the foreign key
   print playerStat
   context = {'player' : player, 'today' : date.today(), 'playerStat' : playerStat }
   return render_to_response ('singleplayer.html', context,          context_instance=RequestContext(request))

私の HTML テンプレート:

{% extends 'base.html' %}
{% block content %}

  <div id="singleplayer">
       <p>Name: {{ player.name|capfirst  }}</p>
       <p>Last Name: {{ player.last|capfirst  }}</p>

  </div>
        {% endfor %}


{% endblock %}

ここで、playerStat を出力すると、player_id からすべての BatStat が取得されます。y の場合、次のようになります。

[<BatStat: 40539520011>, <BatStat: 40539520021>, <BatStat: 40539520031>]

次のようにして、シェルで必要な結果を取得します。

playerStatID=BatStat.objects.filter(player_id='the player id here')
print playerStatID
[<BatStat: 40539520011>, <BatStat: 40539520021>, <BatStat: 40539520031>]
for i in playerStatID:
      playerStat= BatStat.objects.get(bat_stat_id=i)
      print BatStat.ab
      200

そうすることで、必要な情報を取得できます。どうすればそれを取得できますか。それは、テンプレートに配置することです。テンプレートでループを使用してクエリを取得することはできないため、ビューでループを実行する必要があると思いますが、どうすればよいでしょうか。ありがとう

4

1 に答える 1

2

ForeignKeyと の間BatStatにがあるのでPlayer_Bios、 を使用して、シングル プレーヤーにbatstat_set関連するすべてを取得できます。BatStats

[ドキュメントは_setこちら][1]

したがって、次のようになりますviews.py

def SpecificPLayer(request, playerslug):
    player = Player_Bios.objects.get(player_id=playerslug) #this is the name, last and it is working fine   
    batstats = player.batstat_set.all() 
    context = {'player' : player, 'today' : date.today(), 'batstats': batstats, }
    return render_to_response ('singleplayer.html', context,context_instance=RequestContext(request))

そしてあなたのテンプレートで:

{% for stat in batstats %}
    {{ stat.ab }}
{% endfor %}
于 2013-01-30T22:56:53.303 に答える