2

そのデータが自分のベースに既に存在する別のデータと競合する場合、自分のデータベースにデータを挿入できないようにしたいと考えています。私が意味したのは:

start_dateデータベースフィールドにend_date次の条件で挿入したいとしましょう:

-(start_date; end_date)期間は、私のベースの他の期間と交差することはできません

ジャンゴでそれをチェックするためのすてきで速い方法はありますか?

データベース全体を手動で反復処理できる可能性がありますが、適切なラッパーはありますか?

4

1 に答える 1

1

次のようなことをお勧めします。

lower = Entry.objects.filter(start_date__lte=new_start)
lower = lower.filter(end_date_gte=new_start)

upper = Entry.objects.filter(start_date__lte=new_end)
upper = upper.filter(end_date_gte=new_end)

valid = len(lower) == 0 and len(upper) == 0

if valid:
    # Do the insert
    pass
于 2013-04-22T01:46:07.843 に答える