Как выполнить обратное отношение в Django? - PullRequest
0 голосов
/ 09 октября 2018

Это мои модели:

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)

Я хочу отфильтровать объекты журнала в пределах "Start_Date" и "End_Date" модели журнала ...

Я хочу сказать,«Дата» в журнале должна быть между «Start_Date» и «End_Date» журнала ...

Возможно, это глупый вопрос ... Но, поскольку я изучаю django, это не легкодля меня ...

Может кто-нибудь сказать мне, как это сделать ???

Заранее спасибо

1 Ответ

0 голосов
/ 09 октября 2018

Попробуйте использовать 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'))
...