の両方のフィールドとstop
フィールドの両方を持つEvent
というモデルがあります。 null start
フィールドとstop
フィールドを除外したいイベントを除外します。Django Unionedクエリセットの.filter()で不正な結果が返される
tempset = Event.objects.filter(site__slug='test-site', owner__email='[email protected]')
tempset2 = Event.objects.filter(site__slug='test-site', invite__slug='bill-compton')
私はこのような労働組合を行うことを試みた:
tempset.union(tempset2)
だけでなく、次のように:
tempset = Event.objects.filter(site__slug='test-site', owner__email='[email protected]').union(Event.objects.filter(site__slug='test-site', invite__slug='bill-compton'))
これらの2つのクエリを使用して
は、私が2クエリセットを取得します
しかし、私はこの構文を使用して、フィルタリングしよう:
filtered_query = tempset.filter(start__isnull=False, stop__isnull=False)
してからスタートをプリントアウトし、値を停止し、
for thing in filtered_query:
print(thing.start, thing.stop)
私はこの出力を得る:
None None
2017-09-01 11:00:25+00:00 None
2017-09-03 11:00:00+00:00 2017-09-03 12:00:00+00:00
2017-09-06 11:00:00+00:00 2017-09-06 12:00:00+00:00
2017-09-06 11:00:54+00:00 2017-09-06 12:00:54+00:00
2017-09-06 11:00:07+00:00 2017-09-06 12:00:07+00:00
注:
私はマージする|
文字を使用する場合2つのクエリーセットでは、このフィルタリングされたクエリーは正常に動作します。しかし、私は.union()
がこのマージ動作を許可すると理解していました。
どのような考えですか?