如何显示外键项列表?

时间:2021-02-25 15:57:42

标签: django model

我正在努力显示外键项目列表。我可以显示类别列表。但是我无法显示属于此类别的时间列表。例如,如果我们认为它们属于同一类别,我想显示属于该类别的模型:

  1. 肉披萨
  2. 蔬菜比萨

models.py

class PizzaCategory(models.Model):

    PIZZA_CATEGORY = (      
        (1, 'Meat'),
        (2, 'Fish'),
        (3, 'Vegetarian'),        
        )
    
        name = models.CharField(max_length=250)
        category = models.IntegerField(choices=PIZZA_CATEGORY,default=1)

        def __str__(self):
            return self.name
    
    class PizzaTopping(models.Model):
        name = models.CharField(max_length=60, unique=True)
    
        def __str__(self):
            return self.name
    
    class MeatPizza(models.Model):
        name = models.CharField(max_length=60, unique=True)
        pizza_category = models.ForeignKey(PizzaCategory, on_delete=models.CASCADE, blank=True, null=True)
        pizza_topping = models.ForeignKey(PizzaTopping, on_delete=models.CASCADE, blank=True, null=True)
    
        def __str__(self):
            return self.name
    
    class VegPizza(models.Model):
        name = models.CharField(max_length=60, unique=True)
        pizza_category = models.ForeignKey(PizzaCategory, on_delete=models.CASCADE, blank=True, null=True)
        veg_type = models.CharField(max_length=60, unique=True)
        pizza_topping = models.ForeignKey(PizzaTopping, on_delete=models.CASCADE, blank=True, null=True)
    
        def __str__(self):
            return self.name

views.py

@login_required(login_url="/login/")
def category_detail(request, category_id):
    category = get_object_or_404(PizzaCategory, pk=category_id)
    categorys = PizzaCategory.objects.all()
    
    context = {
                'categorys': categorys,
               
              }
    return render(request, 'pizzas/category_detail.html', context)

category_detail.html

<tbody>
      {% for category in categorys.all %}
      <tr>                                               
         <td>{{ category.name }}</td>
      </tr>
      {% endfor %}
</tbody>

1 个答案:

答案 0 :(得分:0)

好的, 尝试在您的 HTML 中编写:

{% for category in categorys %}

删除“.all”

我也经常这样写 .py 文件:

return render(request, 'pizzas/category_detail.html', {
           'categorys': categorys,
            })

即使我知道上下文是最佳实践。

还有:

确保您已在 .py 文件顶部导入模型,如下所示:

from .models import PizzaCategory

或者这对他们所有人来说:

from .models import *
相关问题