如何在Django中执行反向关系?

时间:2018-10-09 13:56:00

标签: python django django-models

这是我的模特

class Journal(models.Model):
    Start_Date = models.DateField(default=datetime.date(2018,4,1),blank=False)
    End_Date = models.DateField(default=datetime.date(2019,3,31),blank=False)
    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)

我要过滤日记帐模型的“开始日期”和“结束日期”中的日记帐对象...

我的意思是说日记中的“日期”必须在日记的“开始日期”和“结束日期”之间...

这可能是我一个愚蠢的问题...但是,由于我正在学习Django,对我来说这并不容易...

谁能告诉我该怎么做?

提前谢谢

1 个答案:

答案 0 :(得分:3)

尝试像这样使用F expression

Journal.object.filter(journals__Start_Date__gt=F('Date'), journals__End_Date__lt=F('Date'))

实际上,目前尚不清楚Selectdate模型的作用。如果仅出于过滤目的创建它,则可以将其删除并在不使用它的情况下使用ORM:

Journal.object.filter(Date__gt=some_date_start, Date__lt=some_date_end)

对于更新的问题,您可以执行以下操作:

Journal.object.filter(Start_Date__gte=F('Date'), End_Date__lte=F('Date'))