В моем URL есть ключевое слово "shop_name".
Также есть модель магазина с полем «имя».
В моем классе ListView мне нужно делать повторяющиеся запросы к модели Shop, чтобы получить переменную unicode из метода Shop.get_type (). В зависимости от результата выбирается правильный каталог шаблонов или набор запросов (с использованием подклассовых моделей django).
Вот код.
class OfferList(ListView):
def get_template_names(self):
shop = Shop.objects.get(name=self.kwargs['shop_name'])
return ["shop/%s/offer_list" % shop.get_type()]
def get_queryset(self):
shop = Shop.objects.get(name=self.kwargs['shop_name'])
Offer = shop.get_offers_model()
return Offer.objects.all()
def get_context_data(self, **kwargs):
# again getting shop instance here ...
shop = Shop.objects.get(name=self.kwargs['shop_name'])
context = super(OfferList, self).get_context_data(**kwargs)
context['shop'] = shop
return context
Вопрос в том, что является лучшим способом, чтобы я мог получить некоторую переменную (в данном случае магазин) для всех методов? Я не гуру питона (может быть основная проблема). Я пытался переопределить init , но потом я не смог получить exchange_name (указанный в urls.py), чтобы получить правильный экземпляр "shop". Я хотел бы избежать повторения.
Спасибо