Django在Model.py中循环以检查DB或NOT中是否存在先前的ID

时间:2017-03-02 02:46:26

标签: django django-models

def getPreID(self):
    preid=self.id-1
    preid1 = TourScene.objects.filter(id = preid)
    if not preid1:
        preid =preid-1

我想要的就是当我获得自我时。我需要以前的身份证明 所以我做了 preid = self.id-1 ,现在我想检查这个preid是否存在,如果不是我想要下一个以前的ID。

那么我怎么能在循环中运行它来检查id是否不存在检查先前如果以前不存在那么检查下一个先前的ID ..所以......

请帮帮我,因为我是python的新手。

2 个答案:

答案 0 :(得分:0)

看起来您可能正在尝试获取id来创建新的数据库行。一般情况下,让Django自行解决新对象的id更好,方法是保留id未指定。你想要的东西可能会受到竞争条件的影响 - 也就是说,如果两个进程试图找到一个免费的id,同时他们将选择相同的值。

答案 1 :(得分:0)

如果您希望函数返回先前的ID,或None如果它不存在:

def getPreID(self):
    preid = self.id - 1
    while preid != 0:
        if TourScene.objects.filter(id=preid):
            return preid
        preid = preid - 1
    return None