获取所有类别和项目的类别

时间:2013-08-24 13:24:37

标签: python django


我正在尝试显示所有类别和这些类别中的项目。

例如:

category 1 name
|Item   | Qty available|
|Item 1 | 6          |
|Item 2 | 1          |
category 1 info

category 2 name
|Item   | Qty available|
|Item 1 | 10          |
|Item 2 | 3           |
category 2 info

我的模特:

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=200)
    info = models.TextField(blank=True)

    def __unicode__(self):
        return self.name

class Item(models.Model):
    name = models.CharField(max_length=200)
    quantity = models.IntegerField()
    category = models.ForeignKey(Category)

    def __unicode__(self):
        return self.name

我不太确定如何创建一个视图,我可以迭代所有类别并显示包含所有项目的表格。

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

def show_categories(request):
    ctx = {
        'categories': Category.objects.all(),
    }

    return render(request, 'my_template.html', ctx)

模板:

{% for category in categories %}
{{ category.name }}
| Item     | Qty available |
{% for item in category.item_set.all %}
| Item {{ item.name|rjust:'3' }} | {{ item.quantity|ljust:'13' }} |
{% endfor %}
{{ category.info }}
{% endfor %}

如果您将related_name='items'添加到category = models.ForeignKey(Category),那么您可以将{% for item in category.item_set.all %}替换为{% for item in category.items.all %}