[英]Receiving "NotImplementedError" when using TruncMonth in Django QuerySet
在編程和 Django 方面,我是一個完全的初學者。
我在用什么:
Django 2.2.8
pymongo 3.12.1
瓊戈 1.3.6
MongoDB 3.6.23
我正在嘗試創建一個查詢集,我在其中從數據庫中獲取日期並將其按月分組。 我從數據庫中提取的日期格式為“2022-11-26T00:00:00.000+00:00”。 因此,我正在嘗試使用 TruncMonth 注釋僅當月的新字段,以便我可以按月分組。 我也嘗試過使用“提取”,但這似乎也不起作用。
我試圖避免使用使用“額外”的方法,因為它已被棄用。
我一直在 python shell 中這樣做,直到得到我想要的結果。 這是我的代碼:
模型.py:
class Charts(models.Model):
severity_type = models.CharField(max_length=25)
num_findings = models.IntegerField()
finding_date = models.DateTimeField()
python shell:
>>>from charts.models import Charts
>>>from datetime import datetime
>>>from django.db.models.functions import TruncMonth
>>>Charts.objects.annotate(month=TruncMonth('finding_date')).values('month')
#哪個會拋出這個錯誤
`NotImplementedError: subclasses of BaseDatabaseOperations may require a datetime_trunc_sql() method`
根據我所做的研究,它與我認為的日期時間與日期的字段有關。 我發現這篇文章似乎在正確的軌道上,但無法執行。
另一個有用的信息是當我運行 Charts.objects.values('finding_date') 它返回: [{'finding_date': datetime.datetime(2022, 11, 26, 0, 0, tzinfo=<UTC>)},
...等所以我知道該字段是 datetime.datetime。
我知道你需要一個答案,所以我會很快提供一個,雖然我是在手機上輸入的,所以不會很詳細。
我認為您想使用 Extract 而不是 TruncMonth。 看這里
https://docs.djangoproject.com/en/4.1/ref/models/database-functions/#extract
在該頁面上,您會找到一個示例,他們從日期時間字段中提取年份
>>> experiment = Experiment.objects.annotate(
... start_year=Extract('start_datetime', 'year')).get()
>>> experiment.start_year
2015
我很確定,如果您使用 Extract 而不是 TruncMonth 並使用“月”而不是“年”,一切都應該有效。
讓我知道事情的后續!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.