2009-08-13 2 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 %} 

Что я ищу это лучший идиоматических способ включения в этой точке зрения Юникода представление и generated поле (a DateTimeField) от последнееTurn, которое указывает на текущий Game в цикле, исходя из значения generated. Turn.game - поле, которое указывает на Game, очередь, принадлежащая (a ForeignKey).

Update:

Моя 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

+0

Хорошо, я обновил свой вопрос, чтобы включить его. –

ответ

0

Если Turn.game указывает на соответствующей Game объекта, то {{game.turn_set.all}} должен возвращать набор Turn объектов для этой игры.

Возможно, вам будет необходимо добавить класс Meta к модели Turn на заказ от новейшего до старейшего.

Class Meta: 
    ordering = ['-generated'] 

Затем {{game.turn_set.all.0}} должен возвратить представление Юникода для нового поворота к этой игре, и {{game.turn_set.all.0.generated}} возвращает связанный datetime объект.

Примечание. Это непроверенный код.

+0

Это само по себе недостаточно. Я вижу недавно добавленные теги , но между ними ничего нет. –

+0

Конечно, это помогло бы, если бы я набрал его правильно ... –

Смежные вопросы