objects.all()查询集不使用视图到模板;多对一的关系

时间:2015-05-20 00:01:15

标签: django django-templates django-views

我试图让这个模板调用一个过去曾与多对多关系起作用的函数。这次是多对一的。

detail.html模板

{{ icecreamflavor.name.all }}

观点:

    from django.shortcuts import get_object_or_404, render
    from django.views import generic

    from .models import IceCream, IceCreamFlavor

    # Create your views here.


    class IndexView(generic.ListView):
        template_name = 'ice_cream/index.html'
        context_object_name = 'ice_cream_list'

        def get_queryset(self):
            return IceCream.objects.order_by('brand')

    class DetailView(generic.DetailView):
        model = IceCreamFlavor
        template_name = 'ice_cream/detail.html'

2型号:

class IceCream(models.Model):
    ice_cream_id = models.AutoField(primary_key=True)
    brand = models.CharField(max_length=200)

    def __unicode__(self):
        return self.brand


class IceCreamFlavor(models.Model): 
    ice_cream_flavor_id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200)
    rating = models.DecimalField(max_digits=3, decimal_places=1)
    brand = models.ForeignKey(IceCream)    

    def __unicode__(self):
        return self.name

这是多对一的关系,我相信在我看来,我在DetailView的模型上搞砸了一些东西。我想使用objects.all()方法在详细视图中简单地调用冰淇淋的所有口味。

什么都没有出现。教程中的文档让我感到困惑。 IndexView可以显示所有品牌;只需要DetailView即可调出所有风味;我稍后会格式化。对于记录,detail.html模板中的{{ icecreamflavor }}确实只显示一种风格,而不是所有风格。我相信这是关于实例的事情。

1 个答案:

答案 0 :(得分:3)

索引视图

首先,当您使用Django Generic List View时,模板中的对象列表称为object_list。查看上面的链接,查看django文档。

为了显示索引模板中的所有IceCream名称,您应该这样做:

{% for item in object_list %}
    {{item.brand}}
{% endfor %}

要访问IceCream的IceCreamFlavors,你应该这样做:

{% for item in object_list %}
    {{item.icecreamflavor_set.all}}      
{% endfor %}

{{item.icecreamflavor_set.all}}< - 检查我是否正在使用 icereamflavor _set

当外键来自IceCreamFlavor到IceCream,并且您想要从IceCream访问IceCreamFlavor时,您需要将 _set 添加到模型的名称。

详细信息视图

第二个视图是Django Generic DetailView,因此视图只向模板发送一个项目是完全正常的行为。

如果要传递所需的所有项目,请将视图从DetailView更改为ListView。

我建议您查看有关ListView和DetailView的文档,以便更好地了解其中发生的情况。

另外,我建议您查看Django: Backward relationships