如何循环';添加';Django模板中的标记?

如何循环';添加';Django模板中的标记?,django,django-templates,Django,Django Templates,我想计算每个市场中有多少产品变体可用。目前,我只能计算每个分销商的产品变化。我正在考虑使用对每个分销商的产品变化进行求和来解决这个问题,但不知道如何在循环的模板中实现这一点。还是有更好的解决办法?我愿意听取建议 Django的5款相关车型: class Market(models.Model, RecordStatus): name = models.CharField(max_length=100) class Country(models.Model): market =

我想计算每个
市场中有多少
产品
变体可用。目前,我只能计算每个
分销商的
产品
变化。我正在考虑使用对每个
分销商的
产品
变化进行求和来解决这个问题,但不知道如何在
循环的模板
中实现这一点。还是有更好的解决办法?我愿意听取建议

Django的5款相关车型:

class Market(models.Model, RecordStatus):
    name = models.CharField(max_length=100)

class Country(models.Model):
    market = models.ForeignKey(Market, on_delete=models.SET_NULL, null=True, blank=True)
    name = models.CharField(max_length=100)

class Distributor(models.Model, RecordStatus):
    headquarter = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
    country = models.ForeignKey(Country, on_delete=models.SET_NULL, null=True, blank=True)
    name = models.CharField(max_length=100, null=True, blank=True)

class Product(models.Model, RecordStatus):
    video = models.URLField(verbose_name='Video URL', max_length=250, null=True, blank=True)

class ProductStock(models.Model):
    distributor = models.ForeignKey(Distributor, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    stock = models.PositiveIntegerField(null=True, blank=True)
我的
视图.py

def market_list_view(request):
    markets = Market.objects.all()

    context = {
        'market_list': markets,
    }
    return render(request, 'product_visualizers/market_list.html', context)
我当前尝试的
market\u list.html
模板:

{% for market in market_list %}
   <h3>{{market.name}}</h3>

   <p>{% for country in market.country_set.all %}
      {% for distributor in country.distributor_set.all %}
          {{ distributor.productstock_set.all|length }}  # should I write |add besides |length to sum the numbers?
      {% endfor %}
   {% endfor %}</p>

{% endfor %}
{% for market in market_list %}
   <h3>{{market.name}}</h3>
   <p>Product variations: {{ market.get_product_variations }}</p>
{% endfor %}
{market in market_list%}
{{market.name}
{market.country_set.all%}
{country.distributor_set.all%}中的分发服务器的%
{{distributor.productstock_set.all | length}}我应该写|除了| length之外再加上| length来求和这些数字吗?
{%endfor%}
{%endfor%}

{%endfor%}
我应该在嵌套的
中为模板内的
编码什么

您可以使用:

class Market(models.Model, RecordStatus):
    name = models.CharField(max_length=100)

    def get_product_variations(self):
        return Product.objects.filter(productstock__distributor__country__market=self).count()
对于您的模板:

{% for market in market_list %}
   <h3>{{market.name}}</h3>

   <p>{% for country in market.country_set.all %}
      {% for distributor in country.distributor_set.all %}
          {{ distributor.productstock_set.all|length }}  # should I write |add besides |length to sum the numbers?
      {% endfor %}
   {% endfor %}</p>

{% endfor %}
{% for market in market_list %}
   <h3>{{market.name}}</h3>
   <p>Product variations: {{ market.get_product_variations }}</p>
{% endfor %}
{market in market_list%}
{{market.name}
产品变化:{market.get_Product_variations}

{%endfor%}
您可以使用:

class Market(models.Model, RecordStatus):
    name = models.CharField(max_length=100)

    def get_product_variations(self):
        return Product.objects.filter(productstock__distributor__country__market=self).count()
对于您的模板:

{% for market in market_list %}
   <h3>{{market.name}}</h3>

   <p>{% for country in market.country_set.all %}
      {% for distributor in country.distributor_set.all %}
          {{ distributor.productstock_set.all|length }}  # should I write |add besides |length to sum the numbers?
      {% endfor %}
   {% endfor %}</p>

{% endfor %}
{% for market in market_list %}
   <h3>{{market.name}}</h3>
   <p>Product variations: {{ market.get_product_variations }}</p>
{% endfor %}
{market in market_list%}
{{market.name}
产品变化:{market.get_Product_variations}

{%endfor%}
提示:Django的模板语言受到设计的限制-除了表示逻辑(您尝试做的是明确的域逻辑,而不是表示)之外的任何事情都应该在模板之外执行(在您看来,在模型方法中,等等)。瞧,佩德拉姆的答案是正确的。@Brunodesshuilliers谢谢你的提示。我以前不知道Django的模板受到设计的限制。出于某些原因,他们在添加对第三部分模板引擎的支持时从文档中删除了该部分,但您仍然可以找到它:“如果您有编程方面的背景,或者您习惯于将编程代码直接混合到HTML中的语言,那么您应该记住,Django模板系统不仅仅是嵌入HTML中的Python。提示:Django的模板语言受设计的限制——除了表示逻辑(您试图做的是明确的域逻辑,而不是表示)之外的任何事情都应该在模板之外执行(在您看来,在模型方法中,等等).IOW,Pedram的答案是正确的。@Brunodesshuilliers感谢您的提示。我以前不知道Django的模板受设计限制。出于某些原因,他们在添加对第三部分模板引擎的支持时从文档中删除了该部分,但您仍然可以找到它:“如果您有编程背景,或者,如果您习惯于将编程代码直接混合到HTML中的语言,那么您需要记住,Django模板系统不仅仅是嵌入HTML中的Python。这是通过设计实现的:模板系统旨在表示表示,而不是程序逻辑。“谢谢你回答我的问题。这正是我需要的。如果你不介意的话,我想编辑你的答案,加入一个更相关的模型。通过在
get\u product\u variations
功能中的
productstock
前面添加
\u分销商
。感谢Pedram回答我的问题。这正是我需要的。如果你不介意的话,我想编辑你的答案,加入一个更相关的模型。通过在
get\u product\u variations
功能中的
分销商
前面添加
productstock