让我的Django应用程序显示我喜欢它的方式有点麻烦。我的模型看起来像这样:
class City (models.Model):
city_name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.city_name
class Portfolio(models.Model):
portfolio_name = models.CharField(max_length=20, unique=True)
city = models.ForeignKey(City, db_constraint=False, on_delete=models.CASCADE)
def __str__(self):
return self.portfolio_name
class Property (models.Model):
portfolio = models.ForeignKey(Portfolio, db_constraint=False, on_delete=models.CASCADE)
prop_name = models.CharField(max_length=250, unique=True)
def __str__(self):
return self.prop_name
我希望我的模板显示每个城市,并且每个城市下都有自己的投资组合,并且每个城市下都有其属性。我是Django的新手,来自AngularJS,我可以这样做,在我的循环中抛出过滤器(显然在Django中不起作用,至少我是怎么做的):< / p>
<ul>
{% for city in all_cities %}
<li>
{{ city.city_name }}
<ul>
{% for portfolio in all_portfolios| portfolio.city = city %}
<li>
{{ portfolio.portfolio_name }}
<ul>
{% for property in portfolio.all_properties| property.portfolio = portfolio%}
<li>
{{ property.prop_name }}
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
有什么想法吗?可能有一个简单的解决方案,我只能用语言表达。我发现这样做的唯一方法是为每个城市创建一个自定义查询集,然后为每个组合创建一个自定义查询集,但必须有更好的方法来实现这一点。
答案 0 :(得分:1)
忽略这样做无法实现数据库效率的事实,最简单的方法是确保正确访问反向的外键关系。
做这样的事情:
{% for city in all_cities %}
...blah blah blah
{% for portfolio in city.portfolio_set.all %}
... Blah blah
{% for property in portfolio.property_set.all %}
... More blah
你应该好好去