如何在模板中显示父母的孩子?

时间:2019-06-17 13:48:33

标签: python django

我有以下型号:

class Category(models.Model):
    cat_image = models.ImageField(upload_to='Category',null=True, blank=True)
    cat_title = models.CharField(max_length=250)
    cat_overview = models.CharField(max_length=500)
    cat_slug = models.SlugField(unique=True)


class SubCategory(models.Model):
    sub_cat_image = models.ImageField(upload_to='SubCategory',null=True, blank=True)
    sub_cat_title = models.CharField(max_length=255)
    sub_cat_overview = models.CharField(max_length=500)
    sub_cat_parent = models.ForeignKey(Category, on_delete=models.CASCADE)
    sub_cat_slug = models.SlugField(unique=True)


class SubSubCategory(models.Model):
    subsub_cat_title = models.CharField(max_length=150)
    subsub_cat_parent = models.ForeignKey(SubCategory, on_delete = models.CASCADE)
    subsub_cat_slug = models.SlugField(unique=True)

我已经用这些数据填充了这些模型,并且在模板中显示Category模型没有问题,但是当我想在一个模板中同时显示SubCategorySubSubCategory时出现问题

enter image description here

这些是类别,但是例如当我单击“ Python”时。该页面显示:

enter image description here

如您在上面的代码中看到的那样,问题是只有python syntaxPython VariablesPython loops属于Python Basic而不是Python Files和{{1} }。如何避免这种情况,只显示Python Logs模型的相关SubSubCategory实例?

与上图相关的代码:

views.py

SubCategory

def home(request): return render(request, 'tutorials/home.html', {'categories':Category.objects.all()}) def sub_cat(request, category): sub_cats = SubCategory.objects.filter(sub_cat_parent__cat_slug=category) subsub_cats = SubSubCategory.objects.filter(subsub_cat_parent__sub_cat_parent__cat_slug = category) context = { 'sub_cats': sub_cats, 'subsub_cats': subsub_cats, } return render(request, 'tutorials/sub_cat.html', context)

sub_cat.html

请帮助我,谢谢。

编辑:如果您知道其他更好的方法,请帮助我。

1 个答案:

答案 0 :(得分:1)

代替获取所有SubSubCategory实例并使用它们两次,您应该使用反向关系:

{% for subsub_cat in sub_cat.subsubcategory_set.all %}
    <a href="#">{{ subsub_cat.subsub_cat_title }}</a>
{% endfor %}

您可以在Related objects文档中阅读有关反向关系的更多信息。