我有兩個型號,市和國家與國家是City.My CityDetailView URL的一個ForeignKey關係被構造爲:重寫get_queryset()一個Django的DetailView
r'^state/(?P<state>[-\w]+)/city/(?P<slug>[-\w]+)/$'
我CityDetailView通過上面的網址被稱爲是:
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
我的城市模型爲每個城市都有獨特的名稱。如果我嘗試訪問發生在兩個州的城市,我會得到一個錯誤,即get()返回多個城市。我試圖重寫get_queryset()方法來過濾只在一個單一的狀態城市模型,但它似乎並沒有工作,這是奇怪的,因爲我的CityListView是相似的,但工作正常。任何關於我失蹤的想法將不勝感激。
哈哈的確這將是一個好主意,記得要篩選適當的順序:)你的列表。要獲得某個州的城市,您應該按州來過濾城市列表。如果你可以/想這樣做,你甚至可以用url params來做很多事情。 – eusid