首页 > 解决方案 > 在 GCBV 的 django ListView 中访问外键值

问题描述

我有两个由外键关联的模型,如下所示。(此处仅显示重要字段。)

在模型中:

class Category(models.Model):
    name = models.CharField(max_length=50, unique=True)
    description = models.TextField()
    ...

class Price(models.Model):
    category = models.ForeignKey(Category) # referred to above model
    sub_type = models.CharField(max_length=4, choices=CHOICE_SUB_TYPE)
    price = models.DecimalField()
    ...

我将在 ListView 中显示类别以及相关的定价详细信息。为此,我需要为每个 Category 对象设置相关的定价对象。最好和最有效的方法是什么?

标签: djangodjango-class-based-viewsdjango-generic-views

解决方案


您的代码很好,在模板中,您可以访问相关模型。在模板中列出类别时,您可以:

<ul>
{% for cat in categories %}
   <li>{{ cat.name }}</li>
   <ul>
       {% for price in cat.price_set.all %}
           {{ price.price }}
       {% endfor %}
   </ul>

{% endfor %}
</ul>

为了在显示价格详细信息时显示类别,您可能希望将Single object Mixin 与 ListView 一起使用

推荐: 相关对象参考。


推荐阅读