Problem Adding Single Product Variation

4 views
Skip to first unread message

JimR

unread,
Oct 12, 2008, 10:44:43 PM10/12/08
to Satchmo users
I'm trying to add a single product variation to a configurable
product. I've tried it both with my product load script as well as
manually. I add an Option Group (Color). I then add an Option Item
(Medium Cherry). I successfully add the product, then create the
configurable product, then add a single variation. Everything is fine
until I try to access the product either through my store or through
the admin interface. I can add the entire Option Group and I do not
have a problem. I can delete the product variation and the problem
disappears. I get the following traceback:

RuntimeError: maximum recursion depth exceeded in cmp
Traceback (most recent call last):
File "C:\Python25\Lib\site-packages\satchmo\configuration
\values.py", line 256, in _value
val = self.setting.value
File "C:\Python25\Lib\site-packages\satchmo\configuration
\values.py", line 250, in _setting
return find_setting(self.group.key, self.key)
File "C:\Python25\Lib\site-packages\satchmo\configuration
\models.py", line 46, in find_setting
setting = Setting.objects.get(site__id__exact=siteid,
key__exact=key, group__exact=group)
File "C:\Python25\Lib\site-packages\django\django\db\models
\manager.py", line 93, in get
return self.get_query_set().get(*args, **kwargs)
File "C:\Python25\Lib\site-packages\django\django\db\models
\query.py", line 297, in get
clone = self.filter(*args, **kwargs)
File "C:\Python25\Lib\site-packages\django\django\db\models
\query.py", line 483, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "C:\Python25\Lib\site-packages\django\django\db\models
\query.py", line 497, in _filter_or_exclude
clone = self._clone()
File "C:\Python25\Lib\site-packages\django\django\db\models
\query.py", line 595, in _clone
query = self.query.clone()
File "C:\Python25\Lib\site-packages\django\django\db\models\sql
\query.py", line 175, in clone
obj.where = deepcopy(self.where)
File "C:\Python25\lib\copy.py", line 173, in deepcopy
y = copier(memo)
File "C:\Python25\Lib\site-packages\django\django\utils\tree.py",
line 61, in __deepcopy__
obj.children = deepcopy(self.children, memodict)
File "C:\Python25\lib\copy.py", line 162, in deepcopy
y = copier(x, memo)
File "C:\Python25\lib\copy.py", line 227, in _deepcopy_list
y.append(deepcopy(a, memo))
File "C:\Python25\lib\copy.py", line 162, in deepcopy
y = copier(x, memo)
File "C:\Python25\lib\copy.py", line 234, in _deepcopy_tuple
y.append(deepcopy(a, memo))
File "C:\Python25\lib\copy.py", line 162, in deepcopy
y = copier(x, memo)
File "C:\Python25\lib\copy.py", line 227, in _deepcopy_list
y.append(deepcopy(a, memo))
File "C:\Python25\lib\copy.py", line 192, in deepcopy
_keep_alive(x, memo) # Make sure x lives at least as long as d
File "C:\Python25\lib\copy.py", line 271, in _keep_alive
memo[id(memo)].append(x)

Any help would be greatly appreciated.

Thanks,
Jim

JimR

unread,
Oct 15, 2008, 9:39:57 PM10/15/08
to Satchmo users
Well, I figured out my problem with a lot of searching and
experimentation. I apologize in advance if I don't explain it
correctly.

Once I fully understood the Satchmo Product/Configurable Product/
Product Variation relationship, everything worked out fine. My
problem was that I was creating a Product, then creating a
Configurable product, then applying the single product variation to
the "master" product. Once I understood that a second product
instance was required (actually, one for each product variation, e.g,
Large-Blue, Medium-Blue, Large-White, etc.) that would be the
"configured" product, everything worked. It also explained the "no
reverse match" problem since it was trying to match itself, and why
the "create_all_variations" worked but the "create_variation" wasn't
working.

So, although it's been covered elsewhere, it never hurts to repeat the
process in different words in case someone else is struggling with
this issue.

1. Create a Product (the parent product)
2. Make that Product (the parent product) Configurable by creating and
adding Option Group(s) to it.
3. Create a Product(s) (the child product(s)) for every combination
you want to create
4. Create a ProductVariation(s) for each child product, using
parent=Configurable Product and product=child product
4. Add the specific product variation(OptionItem, e.g, Large:Blue,
Medium:White, etc.) to the ProductVariation record

If I've misstated anything, please jump in and correct it.

Thanks,
Jim

Bruce Kroeze

unread,
Oct 17, 2008, 5:44:25 PM10/17/08
to satchm...@googlegroups.com

So, although it's been covered elsewhere, it never hurts to repeat the
process in different words in case someone else is struggling with
this issue.

1. Create a Product (the parent product)
2. Make that Product (the parent product) Configurable by creating and
adding Option Group(s) to it.
3. Create a Product(s) (the child product(s)) for every combination
you want to create
4. Create a ProductVariation(s) for each child product, using
parent=Configurable Product and product=child product
4. Add the specific product variation(OptionItem, e.g, Large:Blue,
Medium:White, etc.) to the ProductVariation record

If I've misstated anything, please jump in and correct it.

That's why the product variation manager is so helpful.  Just make the configurable product, and then use the manager to create the one or two variations you want.  It handles all the steps 3-5 above, and is much faster.

--
Bruce Kroeze
Reply all
Reply to author
Forward
0 new messages