我有一个公司的模型。然后我有一个公司职位的基本模型。它包含常见的帖子属性。属性是发布帖子的公司。它指的是带有 ForeignKey 的 Company 模型。最后,我有一个用于 A 类型帖子的子模型(基于 CompanyPost 基本模型):
class Company(models.Model):
name = models.CharField(...)
...
class CompanyPost(models.Model):
company = models.ForeignKey(Company,...)
...
class PostA(CompanyPost):
name = ...
在模板中,我想循环访问特定公司发布的 A 类帖子。
我尝试了这些变体:
1)
{% for postA in company.companyposts_set.all.postA_set.all %}
...
2)
{% for companyposts in company.companypost_set.all %}
{% for postA in companyposts.postA_set.all %}
...
{% endfor %}{% endfor %}
我尝试了上述的其他子变体。似乎没有一个工作。
我知道我可以轻松地在视图中准备集合,例如:
postsA = PostA.objects.filter(company__pk=pk)
并将 postsA 传递给模板上下文,但我想知道是否有办法在模板中循环相关模型的子项。
(注意:遍历 companyposts 是可行的。但我当然会收到所有类型的帖子,比如 postB 等:
{% for post in company.companypost_set.all %}
这就是为什么我尝试上面的变体 2)再次循环结果。)
提前谢谢你。
更新:谢谢大家的回答。我明白,通过选择模型继承,我选择了一个复杂的解决方案。在本文中,我询问是否可以在模板中显示相关模型的子项。为了不混淆问题,在这个问题中我解释了为什么我使用具体的模型继承并询问什么是更好的解决方案。