代码之家  ›  专栏  ›  技术社区  ›  Niladry Kar

DJANGO:ValidationError[“'journals\u Start\u Date'值的日期格式无效。必须是YYYY-MM-DD格式。“]

  •  0
  • Niladry Kar  · 技术社区  · 7 年前

    我要执行以下操作:

     journal.objects.filter(Q(User=request.user) | Q(Date__range=[('journals__Start_Date'),('journals__End_Date')])
    

    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 回复  |  直到 7 年前
        1
  •  1
  •   willeM_ Van Onsem    7 年前

    不能传递2元组 F __range 查找。它的工作原理是,wit将编写如下查询:

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

    所以需要 str(..) F() 对象,即 怎么了 F

    但这当然毫无意义。尽管如此,一个 __range 可以用乳化剂乳化 __gte __lte :

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