在Django中为多个值使用注释

时间:2018-11-11 14:08:05

标签: django

我正在尝试执行使用注释的查询。但是问题是我需要注释2个值,而该项目在我的模板中没有显示2次。.这是为了更好地理解文件。

这些是我使用的模型

class Daily(models.Model):
        date = models.DateTimeField(auto_now=True)
        text = models.CharField(max_length=80)  #
        maden = models.IntegerField(default=0)  #
        maden_from_type = models.ForeignKey(Type, on_delete=CASCADE, blank=True, null=True)
        maden_from_cat = models.ForeignKey(Category, on_delete=CASCADE, blank=True, null=True)
        da2en = models.IntegerField(default=0)  
        da2en_from_type = models.ForeignKey(Type, on_delete=CASCADE, related_name='da2en_from_type', blank=True, null=True)
        da2en_from_cat = models.ForeignKey(Category, on_delete=CASCADE, related_name='da2en_from_cat', blank=True,
                                           null=True)
        farm = models.ForeignKey(Farm, on_delete=CASCADE)  
        is_invoice = models.BooleanField(default=False)  

class Type(models.Model):
    type_name = models.CharField(max_length=80)

    def __str__(self):
        return self.type_name


class Category(models.Model):
    category_name = models.CharField(max_length=80)
    type = models.ForeignKey(Type, on_delete=CASCADE)

    def __str__(self):
        return self.category_name

这就是我尝试在视图中执行注释的方式:

def mezan(request):
    all_daily = Daily.objects.values('da2en_from_cat__category_name', 'maden_from_cat__category_name').annotate(
        all_maden=Sum('maden',distinct=True)).annotate(
        all_da2en=Sum('da2en',distinct=True))
    context = {
        'all_daily': all_daily,
    }
    return render(request, 'mezan.html', context)

最后,当我尝试在我的 HTML 模板中查看该项目时,如果该项目在两个带注释的字段中都具有值,则该项目将重复。

 {% for item in all_daily %}
  <tr>
      <td>{{item.da2en_from_cat__category_name}}</td>
      <td>{{item.all_da2en}}</td>
      <td">{{item.all_maden}}</td>
  </tr>
 {% endfor %}

我需要显示一次,显示2个值。但是它显示了两次,每个都有一个值

Image for the result

0 个答案:

没有答案