私は次のモデルを持っています
class Destination_Deal(models.Model):
name = models.CharField(_("Nombre"),max_length=200)
class Departure_Date(models.Model):
date_from= models.DateField(_('Desde'))
date_to= models.DateField(_('Hasta'))
destination_deal = models.ForeignKey(Destination_Deal,verbose_name = _("Oferta de Destino"))
これは、表department_dateの実際のデータです
id date_from date_to destination_deal_id
1 2012-11-01 2013-03-17 1
2 2012-11-01 2012-12-16 2
3 2012-09-16 2012-10-31 3
4 2012-11-01 2012-12-16 3
5 2013-01-04 2013-01-11 4
指定された月と年が date_from と date_to の間にある場合、Destination_Deals をフィルター処理したいと思います。
例 1
月: 9 月 (09)
年: 2012
希望出発日の結果:
ID 3 : 2012 年 9 月に触れる唯一のデータ範囲です。
例 2
月: 2 月 (02)
年: 2013
希望出発日結果:
ID 1 : 2012 年 2 月は 2012 年 3 月より前です
ですので、実際の曜日は問いません。月と年がdate_fromとdate_toの間にある場合は、1日単位であってもフィルタリングする必要があります。
このようなものを使用する必要があると思いますが、その方法がわかりません。
前もって感謝します!ミゲル
---編集---
これは Aamir Adnan からの回答のテストですが、2012 年 11 月から 2013 年 3 月までの間に ID 1 も返す必要があるため、期待どおりに機能していません。2013 年 1 月はその間です。
Departure_Date.objects.all()
[<Departure_Date: id: 1 - from: 2012-11-01 - to: 2013-03-17>,
<Departure_Date: id: 2 - from: 2012-11-01 - to: 2012-12-16>,
<Departure_Date: id: 3 - from: 2012-09-16 - to: 2012-10-31>,
<Departure_Date: id: 4 - from: 2012-11-01 - to: 2012-12-16>,
<Departure_Date: id: 5 - from: 2013-01-04 - to: 2013-01-11>]
month:1
year:2013
where = '%(year)s >= YEAR(date_from) AND %(month)s >= MONTH(date_from) \
AND %(year)s <= YEAR(date_to) AND %(month)s <= MONTH(date_to)' % \
{'year': year, 'month': month}
Departure_Date.objects.extra(where=[where])
[<Departure_Date: id: 5 - from: 2013-01-04 - to: 2013-01-11>]