mam dwa modele, miasto i stan ze stanem bycia relacja ForeignKey z City.My CityDetailView URL jest skonstruowany jako:Zastępowanie get_queryset() w Django DetailView
r'^state/(?P<state>[-\w]+)/city/(?P<slug>[-\w]+)/$'
Moja CityDetailView nazywany przez powyższy adres URL jest :
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
Mój model miasta ma unikalne nazwy dla każdego miasta. Jeśli spróbuję uzyskać dostęp do miasta, które występuje w dwóch stanach, pojawia się błąd, że get() zwrócił więcej niż jedno miasto. Próbuję zastąpić metodę get_queryset(), aby odfiltrować tylko modele City w jednym stanie, ale wydaje się, że nie działa, co jest dziwne, ponieważ mój CityListView jest podobny, ale działa dobrze. Wszelkie przemyślenia na temat tego, czego mi brakuje, zostaną docenione.
haha rzeczywiście byłby to dobry pomysł, aby pamiętać, aby filtrować listę w odpowiedniej kolejności :). aby uzyskać miasta w stanie, należy filtrować listę miast według stanu. możesz nawet zrobić wiele z jego parametrami URL, jeśli możesz/chciałeś to zrobić w ten sposób. – eusid