I'm struggling to understand the db api when it comes to nested
relationships, I have three tables 'Channel', 'Category', 'Product'.
Each channel can have one or many categories, and each category can
have 1 or many products, also each product can be listed in 1 or many
categories (so many to many).

What i'm trying to do is select all products that are in a certain
channel, via the categories.

I can get as far as creating the category_set, from the channel
instance, as documented in the api docs, but I get lost when trying to
get all of the resulting querysets from the category_set.

my (simplified) models:-

class Channel(models.Model):#blog
        name = models.CharField("Name", maxlength=30)
        slug = models.SlugField("URL", prepopulate_from=('name',))

        class Admin:
                pass

        def __unicode__(self):
                return self.name

class Category(models.Model):
        name = models.CharField("Name", maxlength=100)
        slug = models.SlugField("URL", prepopulate_from=('name',))
        channel = models.ForeignKey(Channel, verbose_name="Channel")
        parent = models.ForeignKey("self", verbose_name="Parent
Category",
blank='true', null='true', related_name="child_set")
        desc = models.CharField("Description",
maxlength=500,blank='true')

        class Admin:
                pass

        def __unicode__(self):
                if self.parent:
                        prefix = str(self.parent)
                else:
                        return self.name

                return '>'.join((prefix,self.name))

class Prod(models.Model):
        title = models.CharField(maxlength=100)
        slug = models.SlugField("URL", prepopulate_from=("title",))
        precis = models.TextField(maxlength=100)
        body = models.TextField(maxlength=5000)
        categories = models.ManyToManyField(Category,
verbose_name="Category")

        class Admin:
                pass

        def __unicode__(self):
                return self.title

my view:-

def prods_by_channel(request, slug):

        try:
                ch = Channel.objects.get(slug__iexact=slug)
                ct = ch.category_set.all()
        except Category.DoesNotExist:
                raise Http404

        return list_detail.object_list(
                request,
                queryset = ct.prod_set.all(),
                template_name = "prods/prod_by_channel.html",
        )

I know the category_set contains further prod_sets, but I don't know
how get
at them, using the view code above raises an attribute error... BTW,
my background is lowly frontend development, and I'm a relative
newbie, so please be gentle with me =0)

Could anyone point me in the right direction.....please
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to