Obtenir des informations de l'objet lié sous forme de liste générique
-
13-09-2019 - |
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 .
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