【发布时间】:2017-09-26 22:40:37
【问题描述】:
我需要一些帮助来解决我无法用 Django 解决的问题(除非通过糟糕的嵌套处理)。
我有这三个模型:
class Article(models.Model):
label = models.CharField(max_length=100)
unity = models.ForeignKey('Unity')
category = models.ForeignKey('Category')
user = models.ForeignKey(User)
class Store(models.Model):
label = models.CharField(max_length=100)
address = models.TextField()
products = models.ManyToManyField(Article, through='Offer')
user = models.ForeignKey(User)
class Offer(models.Model):
quantity = models.FloatField()
price = models.FloatField()
infos = models.TextField(blank=True)
article = models.ForeignKey('Article')
store = models.ForeignKey('Store')
user = models.ForeignKey(User)
我想在我的模板中打印一个如下所示的表格:
Article | Quantity | Infos | Store_1 | Store_2 | Store_n
------- | -------- | ----- | ------- | ------- | -------
Ham | 4 | Bla | 4.2 $ | 5.0 $ |
Ham | 6 | Bla | 6.0 $ | 7.5 $ |
相反,我只设法打印了这个:
Article | Quantity | Infos | Store_1 | Store_2 | Store_n
------- | -------- | ----- | ------- | ------- | -------
Ham | 4 | Bla | 4.2 $ | |
Ham | 6 | Bla | 6.0 $ | |
Ham | 4 | Bla | | 5.0 $ |
Ham | 6 | Bla | | 7.5 $ |
通过在视图中执行此操作:
articles = Article.objects.filter(user=request.user)
for article in articles:
article.offers = Offer.objects.filter(article=article)
然后在模板中嵌套两个 for:
{% for article in articles %}
{% for offer in article.offers %}
<tr>
...
</tr>
{% endfor %}
{% endfor %}
我能想到的唯一解决方案是在视图中按数量重新组合报价,但这意味着很多嵌套,我几乎可以肯定有更好的方法来做我想做的事,但我可以找不到解决办法。。
谁能帮我解决这个问题?非常感谢!
【问题讨论】:
-
我认为您应该为此查看序列化程序关系:django-rest-framework.org/api-guide/relations
-
store_1、store_2、store_n从何而来?
标签: django django-templates models manytomanyfield