2013-04-21 55 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 
相关问题