Question

Alors, j'ai Noodling au sujet des vues génériques, en particulier la vue object_list de Django. J'ai dans mon 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),
)

et ce modèle assez rugueux qu'il va:

{% 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 %}

Ce que je suis à la recherche est la meilleure façon idiomatiques d'inclure dans ce point de vue de la représentation unicode et sur le terrain de generated (un DateTimeField) de la les plus récents Turn qui pointe vers le Game courant dans la boucle , en fonction de la valeur de generated. Turn.game est le champ qui pointe vers le Game le tour appartient à (a ForeignKey).

Mise à jour:

Mon modèle Turn est la suivante:

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)

Le modèle Game n'a pas sensiblement changé de la façon dont je spécifié dans ce autre question .

Était-ce utile?

La solution

Si les points de Turn.game à l'objet Game associé, puis {{game.turn_set.all}} doivent retourner l'ensemble des objets Turn pour ce jeu.

Vous devrez peut-être ajouter une classe Meta au modèle Turn à l'ordre du plus récent au plus ancien.

Class Meta:
    ordering = ['-generated']

Ensuite, {{game.turn_set.all.0}} doit retourner la représentation unicode pour le dernier tour de ce jeu, et {{game.turn_set.all.0.generated}} renverra l'objet datetime associé.

Note:. Ce code non testé est

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top