从通用的列表视图对象相关信息的获取
-
13-09-2019 - |
题
所以,我一直在noodling关于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
)的最佳习惯的方法从最近的Turn
指向当前Game
在环基于generated
的价值。 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)
在Game
模型没有明显从方式改变我指定它在此其他问题。
解决方案
如果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
对象。
注意:这是未测试的代码
不隶属于 StackOverflow