DJANGO:ValidationError [“'journals__Start_Date'值的日期格式无效。它必须为YYYY-MM-DD格式。”]

时间:2018-10-10 10:34:05

标签: django django-models django-views

我不知道自己在代码中做错了什么

我要执行此操作:

 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表达式,但是它不过滤日期范围...

1 个答案:

答案 0 :(得分:1)

您不能将2个元组的F对象传递给__range查找。在某种意义上,机智将编写如下查询:

-- ...
WHERE date BETWEEN F(column1) AND F(column2)

因此,需要str(..)对象的F(),而不是{em> 应该如何翻译F对象的对象。

但这当然没有道理。话虽如此,__range可以与__gte__lte完美结合:

journal.objects.filter(
    Q(User=request.user) |
    Q(Date__gte=F('journals__Start_Date'), Date__lte=F('journals__End_Date'))
)