从通用列表视图中的相关对象获取信息

时间:2009-08-13 01:45:28

标签: python django django-templates django-views

所以,我一直在讨论Django的通用视图,特别是object_list视图。我在urls.py

中有这个
from django.conf.urls.defaults import *
from django.views.generic import list_detail
from diplomacy.engine.models import Game

game_info = {
    "queryset": Game.objects.filter(state__in=('A', 'P')),
    "template_object_name": "game",
    }

urlpatterns = patterns('',
    (r'^$', list_detail.object_list, game_info),
)

这个相当粗略的模板:

{% block content %}
  <table>
    <tr>
      <th>Name</th>
      <th>Turn</th>
      <th>Last Generated</th>
    </tr>
    {% for game in game_list %}
    <tr>
      <td>{{ game.name }}</td>
    </tr>
    {% endfor %}
  </table>
{% endblock %}

我正在寻找的是在此视图中包含来自最新 {{的unicode表示和generated字段(DateTimeField)的最佳惯用方法1}}根据Turn的值指向循环中的当前Gamegenerated是指向转弯属于Turn.game的字段(Game)。

更新

我的ForeignKey模型如下:

Turn

SEASON_CHOICES = ( ('S', 'Spring'), ('SR', 'Spring Retreat'), ('F', 'Fall'), ('FR', 'Fall Retreat'), ('FB', 'Fall Build') ) class Turn(models.Model): game = models.ForeignKey(Game) year = models.PositiveIntegerField() season = models.CharField(max_length=2, choices=SEASON_CHOICES) generated = models.DateTimeField(auto_now_add=True) def __unicode__(self): return "%s %s" % (self.season, self.year) 模型与我在this other question中指定的模式没有明显改变。

1 个答案:

答案 0 :(得分:0)

如果Turn.game指向关联的Game对象,则{{game.turn_set.all}}应返回该游戏的Turn个对象集。

您可能需要向Turn模型添加Meta类,以便从最新到最旧订购。

Class Meta:
    ordering = ['-generated']

然后,{{game.turn_set.all.0}}应返回该游戏最新转弯的unicode表示,{{game.turn_set.all.0.generated}}将返回关联的datetime对象。

注意:这是未经测试的代码。