Форум сайта python.su
Добрый день.
Мне нужно, чтобы у товара url формировался через артикул (поле UPC). А сейчас он формируется как product.slug+“_”+product.id
Как его можно поменять (или может быть добавить второй URL)?
Спасибо.
Офлайн
У меня получилось сделать желаемое грубым хаком кода oscar
А именно:
файл oscar/apps/catalogue/abstract_models.py
class AbstractProduct, поменял метод get_absolute_url() на вот это:
def get_absolute_url(self): return reverse('catalogue:detail', kwargs={'product_upc': self.upc})
url(r'^(?P<product_slug>[\w-]*)_(?P<pk>\d+)/$', self.detail_view.as_view(), name='detail'),
url(r'^(?P<product_upc>[\w-]*)/$', self.detail_view.as_view(), name='detail'),
def get_object(self, queryset=None): # Check if self.object is already set to prevent unnecessary DB calls if hasattr(self, 'object'): return self.object else: return super(ProductDetailView, self).get_object(queryset)
def get_object(self, queryset=None): # Check if self.object is already set to prevent unnecessary DB calls if hasattr(self, 'object'): return self.object elif "product_upc" in self.kwargs: return self.get_object_by_upc() else: return super(ProductDetailView, self).get_object(queryset) def get_object_by_upc(self): return Product.objects.get(upc=self.kwargs.get("product_upc"))
Отредактировано fezeev (Фев. 11, 2016 14:55:23)
Офлайн
Разобрался, всем спасибо. Официальная документация оказалась достаточно подробной, чтобы творчески ее переработать.
Офлайн