Tengo dos modelos, ciudad y estado de ser Estado una relación de ForeignKey City.My CityDetailView url se construye como:get_queryset Anulación() en una Django DetailView
r'^state/(?P<state>[-\w]+)/city/(?P<slug>[-\w]+)/$'
Mi CityDetailView llamado por el URL anterior es :
class CityDetailView(DetailView):
model = City
context_object_name = 'city'
template_name = 'location/city_detail.html'
def get_queryset(self):
state = get_object_or_404(State, slug__iexact=self.kwargs['state'])
return City.objects.filter(state=state)
def get_context_data(self, **kwargs):
context = super(CityDetailView, self).get_context_data(**kwargs)
city = City.objects.get(slug__iexact=self.kwargs['slug'])
context['guide_list'] = Guide.objects.filter(location=city).annotate(Count('review'), Avg('review__rating'))
return context
Mi modelo de ciudad tiene nombres únicos para cada ciudad. Si intento acceder a una ciudad que aparece en dos estados, aparece un error que indica que get() devolvió más de una ciudad. Estoy intentando anular el método get_queryset() para filtrar solo los modelos City en un solo estado, pero parece que no funciona, lo cual es extraño porque mi CityListView es similar pero funciona bien. Cualquier comentario sobre lo que me falta sería apreciado.
jaja De hecho, sería una buena idea para recordar para filtrar la lista en el orden apropiado :). para obtener ciudades en un estado, debe filtrar su lista de ciudades por estado. incluso podrías hacer mucho con parametros de URL si pudieras o quisieras hacerlo de esta manera. – eusid