Como recuperar objetos com uma auto chave estrangeira

votos
4

Eu tenho uma categoria modelo que tem uma referência FK a si mesmo. Como posso enviar os dados para um modelo e torná-lo parecido com este

  • categoria 1
    • item da lista
    • item da lista
  • categoria 2
    • item da lista
    • item da lista
Publicado 27/03/2009 em 15:05
fonte usuário
Em outras línguas...                            


2 respostas

votos
3

Você pode estar procurando por algo como isto:

models.py

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100)
    parent = models.ForeignKey('self', blank=True, null=True, related_name='child')
    def __unicode__(self):
        return self.name
    class Meta:
        verbose_name_plural = 'categories'
        ordering = ['name']

views.py

from myapp.models import Category # Change 'myapp' to your applications name.
from django.shortcuts import render_to_response

def category(request)
    cat_list = Category.objects.select_related().filter(parent=None)
    return render_to_response('template.html', { 'cat_list': cat_list })

template.html

<ul>
{% for cat in cat_list %}
    <li>` cat`.`name `</li>
    <ul>
    {% for item in cat.child.all %}
        <li>` item`.`name `</li>
    {% endfor %}
    </ul>
{% endfor %}
</ul>
Respondeu 30/03/2009 em 14:26
fonte usuário

votos
2

Parece que você está tentando fazer o trabalho recursão em templates. Isso pode ajudar: http://www.undefinedfire.com/lab/recursion-django-templates/

Respondeu 27/03/2009 em 15:23
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more