繁体   English   中英

OperationalError(1054,““字段列表”中的未知列“月””)

[英]OperationalError (1054, “Unknown column 'month' in 'field list'”)

我正在从数据库中注释每个月的价格,并且遇到了这个错误,我试图找出原因,所以在我的模型中,我有一个DateTimeField ,我尝试在shell内处理数据,一切都很好,我在那里,我也试图用MySQL Workbench查看数据库,那里有数据, 完整的追溯和其余代码,有人可以解释我的注释出了什么问题吗?

models.py

created = models.DateTimeField(auto_now_add=True)

views.py

from django.views.generic import ListView
from django.db.models import Count, Sum
from django.db import connection

from projects.models import Project
from .services import CurrencyConversionService



class ProjectStatisticsList(ListView):
    model = Project
    template_name = 'statistics/statistics_list.html'
    paginate_by = 10

    def get_context_data(self, **kwargs):
        context = super(ProjectStatisticsList, self).get_context_data(**kwargs)

        truncate_month = connection.ops.date_trunc_sql("year", "month")
        total_price_per_month = Project.objects.extra({"month": truncate_month}).values("month").annotate(sum_price=Sum("price_aux"))

        context['total_price_per_month'] = total_price_per_month
        return context

并在模板中:

<tr>
    {% for data in total_price_per_month %}
   <th class="aligh-left"> </th>
    {% endfor %}
   <td>Month: {{ data.month }}</td>
    <td>Price: {{ data.sum_price }}</td>
  </tr>

我认为您不能在values子句中使用extra字段。

但这确实是错误的方法。 您应该使用Django的数据库功能支持; 具体来说, extract功能

from django.db.models.functions import Extract
Project.objects.annotate(month=Extract('created', 'month').values("month").annotate(sum_price=Sum("price_aux"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM