Ah okay, I looked at the view and I see where it's getting that information from now. I thought that maybe it was sprouting some magical class inheritance property that I haven't seen before (which wouldn't surprise me. I don't know as much about python as I think I do. My mind almost melted when I first saw decorators)
On Aug 28, 8:37 am, Bob Waycott <[email protected]> wrote: > Lagg, > > The reason you have to use product.multicolorproduct.colors.all() is > that the view is returning a Product instance. It is not returning a > MultiColorProduct instance. If the view were modified so that `product` > was a MultiColorProduct instance, then you could use > product.colors.all(), as well as directly access all Product model > fields, such as product.sku, product.slug, product.name, etc. > > So, the gist is that unless you start writing your own views to > supersede Satchmo's, Satchmo views always return Product instances. > Django is great in that you don't even have to perform the > MultiColorProduct lookup because the ORM returns it as a reverse lookup > on the basis of it being an inherited model. > > Bob > > Lagg wrote: > > 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 -~----------~----~----~----~------~----~------~--~---
