Just a follow-up: Yes, a listener on "satchmo_cart_details_query" did exactly what I needed (pretty much just like part 2 & 3 of the above mentioned article)
I hunted around for a signal for loading product, but there wasn't one, I didn't feel like adding one, and I decided that what I had from before would work if I just fleshed it out some more (and It did work!) Side Question: How come I have to do "product.multicolorproduct.colors.all" to get the color list? Shouldn't it just be "product.colors.all" ( I would think that product would be an instance of MultiColorProduct )? I could only get the former to work, so I'm curious to wither that is a satchmo thing, or a python thing I just haven't seen before? On Aug 26, 8:35 am, Bob Waycott <[email protected]> wrote: > Lagg wrote: > > I was reading (*gasp*) more > > ofhttp://thisismedium.com/tech/satchmo-diaries-part-one/ > > - Part 2 and part 3 seem to describe what I want to do. (Part 3 > > specifically with the modification of the cart details). I think this > > might be one solution to Question 2. > > > So, for Question 1, I'm going to assume that I need to hijack a signal > > from Product, and write a listener function to add a form object to > > the response, and then call that object in the template? > > > I'm not going to mark this as "Solved my own problem" because I'm > > still open to any ideas. > > > Thanks in advance! > > > On Aug 25, 12:36 pm, Lagg<[email protected]> wrote: > > >> Thanks to help from the group, I was able to get a custom product > >> created, added to the admin, and show up in the store. (I followed > >> the method described here > >> :http://thisismedium.com/tech/satchmo-diaries-part-one/ > >> ) > > >> The product (MultiColorProduct) I created only differs only from the > >> default Product in that it has a (one) ManyToManyField( called > >> 'colors' ) so that it can have multiple colors selected (Think tie dye > >> tshirt). > > >> class MultiColorProduct(Product): > >> objects = ProductManager() > > >> colors = models.ManyToManyField(Color) > > >> def __unicode__(self): > >> return u'%s' % self.name > > >> Now comes actually adding my MultiColorProducts to the cart. > > >> Question 1) > >> How would be the best way to display a multiselect box with the > >> MultiColorProducts.colors as the options? > >> I did this in product/product.html > > >> <select multiple="multiple" name="colors" id="id_colors"> > >> {% for c in product.multicolorproduct.colors.all %} > >> <option value="1">{{c.name}}</option> > >> {% endfor %} > >> </select> > > >> Obviously "option value" needs to change for each product (I just > >> threw the code in there for proof of concept), but isn't there a more > >> django-esk way of getting that data displayed? A form class or model > >> form class of some sorts? If so, how would I get that class > >> instantiated since I'm taking Bob Waycott's advice and not messing > >> with any views. > > >> Question 2) > >> How should I go about getting the custom product data saved to the > >> cart? Should I try to get the cart to recognize custom data as > >> CartDetail data? Should I extend Cart into a custom Cart model? Should > >> I do something completely different? > > Do something like this? > > <form action="{% url satchmo_smart_add %}" method="post"> > <input type="hidden" name="quantity" id="quantity" value="1" /> > <input type="hidden" name="productname" id="productname" > value="{{product.slug}}" /> > <input type="submit" class="button submit" id="submit" name="addcart" > value="Order Product"/> > </form> > > Passing a product.slug & quantity to satchmo_smart_add should be all you > need to get an item in the cart. > > As for adding details to the cart, you are right on the money as far as > using a listener. It is the cleanest & most maintainable way to take > care of that need, and exactly what signals are for -- which is why I > documented it in that blog post. > > Really, you shouldn't have to do much of anything special to get an item > into the Cart. > > As for your need on the multicolor options, your select box looks fine > to me. You don't have to create a form for every element. If you do want > to create a Django form, you may wind up having to create a custom view > (note, I said custom view, not modify Satchmo's views). > > Customizing Satchmo for your needs is always going to lead you down the > path of writing code. The more you want to customize, the more you will > be coding. > > Happy coding! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Satchmo users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/satchmo-users?hl=en -~----------~----~----~----~------~----~------~--~---
