2013-04-21 92 views
2

如果數據與我的基礎中已存在的某些其他數據衝突,我不希望將數據插入到數據庫中。我的意思是什麼:如果數據與現有數據衝突,則無法將數據插入到數據庫中

比方說,我想插入到數據庫字段start_dateend_date具有以下條件:

-period (start_date; end_date)不能在我的基地的任何其他時段交叉

是任何漂亮和快速的方式來檢查它在Django?

可能我可以手動遍歷整個數據庫,但也許有什麼好的包裝?

+0

你想在一個單一的領域,如獨特性:如果一個'Company'已經與praticular名存在,則不允許插入另一'公司'同名嗎? – 2013-04-22 06:38:19

回答

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 
相關問題