django - DJANGO: ValidationError ["'journals__Start_Date' 值的日期格式无效。它必须是 YYYY-MM-DD 格式。"]
问题描述
我不知道我在代码中做错了什么
我想执行此操作:
journal.objects.filter(Q(User=request.user) | Q(Date__range=[('journals__Start_Date'),('journals__End_Date')])
我的 models.py 看起来像这样:
class journal(models.Model):
User = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
Company = models.ForeignKey(company,on_delete=models.CASCADE,null=True,blank=True,related_name='Companyname')
Date = models.DateField()
By = models.ForeignKey(ledger1,on_delete=models.CASCADE,related_name='Debitledgers')
To = models.ForeignKey(ledger1,on_delete=models.CASCADE,related_name='Creditledgers')
Debit = models.DecimalField(max_digits=10,decimal_places=2)
Credit = models.DecimalField(max_digits=10,decimal_places=2)
class selectdatefield(models.Model):
Journal = models.ForeignKey(journal,on_delete=models.CASCADE,null=True,blank=True,related_name='journals')
Start_Date = models.DateField(blank=True, null=True)
End_Date = models.DateField(blank=True, null=True)
有人知道我的代码有什么问题吗?
我使用了 F 表达式,但它没有过滤日期范围......
解决方案
您不能将 2 元组的F
-objects 传递给__range
查找。它的工作原理是 wit 将编写如下查询:
-- ...
WHERE date BETWEEN F(column1) AND F(column2)
所以它需要对象str(..)
的F()
,这不是F
对象应该如何翻译。
但这当然没有意义。话虽如此, a__range
可以用 an__gte
和 an模拟__lte
:
journal.objects.filter(
Q(User=request.user) |
Q(Date__gte=F('journals__Start_Date'), Date__lte=F('journals__End_Date'))
)
推荐阅读
- python-3.x - PySpark 读取子文件夹/目录中的所有 json 文件(使用通配符)并添加文件/文件夹名称
- ios - iOS webview http post到另一个新窗口不起作用
- ios - iphone 和 ipad 问题 - 引导卡底部的空白
- c# - 尝试通过代码创建递归索引时在 RavenDB 中获取 IndexCompilationException
- flutter - Flutter - 使用 AndroidAlarmManager 和 Location 获取位置
- java - 解密密码java游戏
- amazon-web-services - 来自 docker 容器而不是 zip 的 Lambda:什么更快?
- google-sheets-api - Google 电子表格 API 问题
- python - 如何在pygame中制作多个屏幕?(如“菜单”屏幕、“主”屏幕、“开始”屏幕等)
- vue.js - 为什么 ::v-deep 不适用于 vue-js 中的某些选择器?