Pregunta

Por lo tanto, he estado Noodling acerca con vistas genéricas de Django, específicamente la vista object_list. Tengo esto en mi 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),
)

y esta plantilla bastante peligroso que va a:

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

Lo que estoy buscando es la mejor manera idiomática de incluir en este punto de vista la representación Unicode y el campo generated (un DateTimeField) desde el más reciente Turn que apunta a la Game corriente en el bucle , basado en el valor de generated. Turn.game es el campo que apunta a la Game la vez pertenece a (a ForeignKey).

Actualización:

Mi modelo Turn es el siguiente:

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)

El modelo Game no ha cambiado apreciablemente de la forma que se especifica en esta otra cuestión .

¿Fue útil?

Solución

Si Turn.game señala al objeto Game asociado, entonces {{game.turn_set.all}} deben devolver el conjunto de objetos Turn para ese juego.

Es posible que deba agregar una clase Meta al modelo Turn a la orden del más nuevo al más antiguo.

Class Meta:
    ordering = ['-generated']

A continuación, {{game.turn_set.all.0}} debería devolver la representación Unicode para el más reciente giro para ese juego, y {{game.turn_set.all.0.generated}} devolverá el objeto datetime asociado.

Nota:. Este es el código no probado

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top