Tôi có hai mô hình, Thành phố và Nhà nước với nhà nước là một mối quan hệ ForeignKey của City.My CityDetailView url được xây dựng như:get_queryset Overriding() trong một Django DetailView
r'^state/(?P<state>[-\w]+)/city/(?P<slug>[-\w]+)/$'
CityDetailView tôi gọi bằng url trên là :
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ô hình thành phố của tôi có tên duy nhất cho mỗi thành phố. Nếu tôi cố gắng và truy cập một thành phố xảy ra ở hai bang, tôi nhận được một lỗi rằng get() trả về nhiều hơn một thành phố. Tôi đang cố gắng để ghi đè lên get_queryset() phương pháp để lọc ra chỉ các mô hình thành phố trong một tiểu bang duy nhất nhưng nó dường như không được làm việc đó là lẻ vì CityListView của tôi là tương tự nhưng hoạt động tốt. Bất kỳ suy nghĩ về những gì tôi đang mất tích sẽ được đánh giá cao.
haha thực sự nó sẽ là một ý tưởng tốt để nhớ để lọc danh sách theo thứ tự thích hợp :). để có được các thành phố trong một tiểu bang, bạn nên lọc danh sách thành phố của bạn theo tiểu bang. bạn thậm chí có thể làm được nhiều thứ với thông số url nếu bạn có thể/muốn thực hiện theo cách này. – eusid