Estaba leyendo algunos tutoriales y libros sobre generic views.¿Qué usar en Django: ListView o list_detail?
En part 4 of the official tutorial, que escribió un ejemplo como este
from django.conf.urls import patterns, include, url
from django.views.generic import DetailView, ListView
from polls.models import Poll
urlpatterns = patterns('',
url(r'^$',
ListView.as_view(
queryset=Poll.objects.order_by('-pub_date')[:5],
context_object_name='latest_poll_list',
template_name='polls/index.html')),
url(r'^(?P<pk>\d+)/$',
DetailView.as_view(
model=Poll,
template_name='polls/detail.html')),
url(r'^(?P<pk>\d+)/results/$',
DetailView.as_view(
model=Poll,
template_name='polls/results.html'),
name='poll_results'),
url(r'^(?P<poll_id>\d+)/vote/$', 'polls.views.vote'),
)
También he estado leyendo The Definitive Guide to Django: Web Development Done Right, Second Edition y cuando hablaban de las vistas genéricas, que escribieron su ejemplo como este
from django.conf.urls.defaults import *
from django.views.generic import list_detail
from mysite.books.models import Publisher
publisher_info = {
'queryset': Publisher.objects.all(),
'template_name': 'publisher_list_page.html',
}
urlpatterns = patterns('',
(r'^publishers/$', list_detail.object_list, publisher_info)
)
¿Debo estar usando ListView
o list_detail
? Ambos vienen de django.views.generic
. Si ambos pueden usarse, ¿cuál es la diferencia (comparación de ventaja y desventaja)?
En caso de que ayude, explicaré mi objetivo: en mi proyecto, quiero enumerar las órdenes de trabajo, y luego quiero una vista detallada de cada orden de trabajo que también contendrá una lista de comentarios para esa orden (similar a los comentarios por publicación de blog).
Realmente no entiendo la documentación de vista genérica basada en clase. Por ejemplo, para ['ListView'] (https://docs.djangoproject.com/en/dev/ref/class-based-views/#list-views), ¿por qué la entrada es tan corta? ¿Dónde puedo encontrar la lista de todos los métodos y variables? – hobbes3
Lamentablemente, es parte de una mala documentación por parte de Django (en parte debido a la herencia múltiple). Pero puede ver lo que subclase: p. Ej. - https://docs.djangoproject.com/en/dev/ref/class-based-views/#django.views.generic.list.MultipleObjectMixin – Jeff