1

所以,我一直在研究 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字段 (a ) 的最佳惯用方式,该表示和字段 (a DateTimeField) 从最近 Turn指向Game循环中的当前值,基于generated. Turn.game是指向Game转弯属于 (a 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)

该模型与我在其他问题Game中指定的方式相比没有明显变化。

4

1 回答 1

0

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

您可能需要将 Meta 类添加到Turn模型中以从最新到最旧进行排序。

Class Meta:
    ordering = ['-generated']

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

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

于 2009-08-13T02:32:11.987 回答