def get_parent(self):
if self.parent:
return [self.parent]
return []
def get_parent_tree(self):
asc = self.get_parent()
for p in asc:
asc.extend(p.get_parent())
return asc
This is what I use for generating a category crumb list
Dj Gilcrease
OpenRPG Developer
~~http://www.openrpg.com
On Wed, Oct 29, 2008 at 4:28 AM, coderb <[EMAIL PROTECTED]> wrote:
>
> hi Thomas,
>
> thanks for all the details, actually my post was not really clear on
> what I have.
> the category model looks like this:
>
> class Category(models.Model):
> name = models.CharField(max_length=100, unique=True)
> slug = models.SlugField(max_length=100, unique=True)
> parent = models.ForeignKey('self',blank=True,null=True)
> seq = models.IntegerField(default=10)
> active = models.BooleanField(default=1)
>
> def __unicode__(self):
> return self.name
>
> @models.permalink
> def permalink(self):
> return "barter.listings.views.category", [self.slug]
>
> ---------------
>
> my view looks like this:
>
> def category(request, myslug):
> category_list = Category.objects.filter(parent__slug=myslug)
> catcrumb_list = Category.objects.filter(slug=myslug)
> return render_to_response('listings/browse.html', {
> 'category_list': category_list,
> 'catcrumb_list': catcrumb_list,
> }
> )
>
>
> and my template looks like this:
>
> {% extends "base.html" %}
>
> {% block content %}
> <h2>Browse Categories</h2>
> <div class="crumbs">
> {% if catcrumb_list %}
> {% for crumb in catcrumb_list %}
> <a href="{{ category.permalink }}">{{crumb.name }}</a>
> {% endfor %}
> {% endif %}
> </div>
> {% if category_list %}
> <ul>
> {% for category in category_list %}
> <li><a href="{{ category.permalink }}">{{category.name }}</
> a></li>
> {% endfor %}
> </ul>
> {% else %}
> <p>No Categories are available.</p>
> {% endif %}
> {% endblock %}
>
>
> currently in this code, catcrumb_list is only populated with the last
> parent category, so the nest-parents is what I need.
> your example above looks good, I'll give it a try and let you know,
> still need to go through your attached trees.py.
>
> One question though, since the array is being built in reverse order
> (child to parent), when it comes to looping thru it in the template,
> it will be printed in the wrong order, so I guess I need to reverse it
> before hand or instead of using append
> could I use something like
>
> parents.insert(1, cat_crumb)
>
> thanks again for your help
>
>
>
> On Oct 29, 7:25 am, Thomas Guettler <[EMAIL PROTECTED]> wrote:
>> Hi,
>>
>> Does this help you?
>>
>> myslug=...
>> parents=[]
>> while myslug:
>> cat_crumb=Category.objects.get(slug=myslug) # I guess slug is unique
>> parents.append(cat_crumb)
>> myslug=cat_crumb.parent
>>
>> But be careful, you might get infinite loops if the parent links
>> to a child. To avoid this you could write an "assert len(parents)<100"
>> into the loop.
>> Except you have a really deeply nested categories.
>>
>> BTW, Why is "parent" a slug field and not a foreign key?
>>
>> I attached my tree mix in.
>>
>> coderb schrieb:
>>
>> > sorry, had not finished this post before accidently submitting it...
>>
>> > for myslug not null
>> > catcrumb_list = Category.objects.filter(slug=myslug)
>> > myslug = catcrumb_list.parent
>>
>> > basically, I want to loop through the category model a parent is not
>> > found, and each pass, store the model tupel in catcrumblist.
>>
>> > I tried catcrumb_list.append, but returns read-only error on 'list'
>>
>> > any help would be apprec-ated.
>>
>> > thank you
>>
>> --
>> Thomas Guettler,http://www.thomas-guettler.de/
>> E-Mail: guettli (*) thomas-guettler + de
>>
>> tree.py
>> 2KViewDownload
> >
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---