Hi, Thanks for this, it's helped me a lot. I will see if I can muddle through the next part.
My my had just gone completely blank with this. Going to get some fresh air first. Thanks again! --- On 22 Mar, 11:38, Daniel Roseman <[email protected]> wrote: > On Mar 22, 11:19 am, James <[email protected]> wrote: > > > > > Hi, > > > I am struggling to get a piece of code working. > > I've looked at it too much and now can't see what im doing wrong. > > > Anyone have any ideas? The error is as follows: > > Type Error > > string indices must be integers - (if ids['m'['manufacturer__id']] is > > not m['manufacturer__id']: ) > > > Code: > > > tmp_manufacturers = Product.objects.filter(category=category).values( > > 'manufacturer__title', 'manufacturer__slug', > > 'manufacturer__id' > > ).distinct() > > > manufacturers = {} > > for m in tmp_manufacturers: > > ids = {} > > > if ids['m'['manufacturer__title']] is not > > m['manufacturer__title']: > > ids.append(m['manufacturer__title']) > > manufacturers.append({ > > 'title': m['manufacturer__title'], > > 'slug': m['manufacturer__slug'], > > 'id': m['manufacturer__id'], > > 'total_products': Product.objects.filter( > > category=category, > > manufacturer__slug=m['manufacturer__slug'] > > ).count() > > }) > > > Also, does anyone have any decent documentation on arrays? > > Firstly, this is not an array, or even the Python equivalent (a list), > but a dictionary. If you want documentation on these, you should look > at the excellent Python docs (eg the reference on standard types > athttp://docs.python.org/library/stdtypes.htmlor the tutorial on > datastructures athttp://docs.python.org/tutorial/datastructures.html). > > Secondly, your code has at least one syntax error, but even without > those, it will always fail because of its logic errors. The initial > syntax error should be obvious in the line of code you show: you have > quotes around the 'm', ie referring to the string 'm', when you just > want to refer to the dictionary m, without quotes. > > But even fixed, that line makes no sense. Firstly, do not use 'is' or > 'is not' for comparisons. That checks for **identity**, which is a > completely different thing from **equality**. You should use != > instead. And then ask yourself how that line could ever be True. You > have just set ids to a blank dictionary, so there is no such thing as > ids[anything]. That line will now always fail with an IndexError. > > Then, note that both 'ids.append()' and 'manufacturers.append()' will > fail with AttributeErrors, because these are both dictionaries, not > lists, and so have no append function. > > Perhaps you should explain exactly what you're trying to achieve, with > an example of the expected output, and we should be able to help in > more detail. > -- > DR. -- You received this message because you are subscribed to the Google Groups "Django 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/django-users?hl=en.

