2009-08-13 14 views
0

因此,我一直在讨论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 DateTimeField)从最近的Turn指向循环中当前的Game,基于generated的值。 Turn.game是指向该转弯属于的(ForeignKeyGame的字段。

更新:

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模式没有明显从我指定它在this other question的方式改变。

+0

你可以发布你所指的模型吗? – imjoevasquez 2009-08-13 02:07:23

+0

好吧,我已经更新了我的问题以包含它。 – 2009-08-13 03:22:01

回答

0

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

您可能需要添加一个元类至Turn模型,以从最新到最旧的顺序。

Class Meta: 
    ordering = ['-generated'] 

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

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

+0

这本身是不够的。我可以看到新添加的​​标签,但他们之间没有任何东西。 – 2009-08-13 03:39:23

+0

当然,如果我输入正确的话,这将有所帮助... – 2009-08-13 03:59:40