django-shop
django-shop copied to clipboard
ProductRetrieveView:param:with_direct_siblings if True return product_pre, product_next to the context and direct_siblings in serializer
Same things as the linked pull request #734 but reviewed in a simpler way.
Otherwise change ProductRetrieveView.as_view
in myshop.cms_app.CatalogListApp
should be sufficient and in this case this pull request can be closed.
Thanks for this pull request. Rendering the previous and next siblings of a product, may really be useful in some situations. Just some points I would have done differently:
- Instead of using a tag named
one_product
, I would use something such aswith_direct_siblings
. - Don't change the semantics of the method
get_object()
, this should always return one and only one product. Instead add another method named sayget_object_with_direct_siblings()
.
But in general looking at your code, how does this view function behave, if someone filters by a certain product tag, or uses the search input field? Where is that information kept while rendering the product's detail view?
For this we have three possible solutions. Add this filtering information to the session, or to a cookie or as a request parameter. The latter generates ugly URLs for the detail view. Session could be problematic, because in django-SHOP the session_id
is generated only after adding the first product to the cart, or as logged in user. So the remaining possibility is a cookie.
Let's discuss this on a chat.