Python Django:检查列表中是否存在模型实例或返回最新添加的数据
我有一个来自两种不同型号的查询集的Python Django:检查列表中是否存在模型实例或返回最新添加的数据,python,django,Python,Django,我有一个来自两种不同型号的查询集的列表新的和旧的: 现在,我想获取添加到两个模型中每个模型的最旧数据,或者获取最新添加到模型的id n = min([p.id if isinstance(p, New) else New.objects.latest('id').id for p in all_list]) o = min([p.id if isinstance(p, Old) else Old.objects.latest('id').id for p in all_list]) 例如,如果
列表新的和旧的:
现在,我想获取添加到两个模型中每个模型的最旧数据,或者获取最新添加到模型的id
n = min([p.id if isinstance(p, New) else New.objects.latest('id').id for p in all_list])
o = min([p.id if isinstance(p, Old) else Old.objects.latest('id').id for p in all_list])
例如,如果列表中没有Old
的实例,并且在Old
模型中还没有保存,我将有Old matching query not exit错误
如何通过分配o=0来处理该错误,而不必使用try。。。除了
我想没有内置的方法来逃避DoesNotExist异常
您可以尝试做的一件事是创建一个处理它的函数,然后调用它。这样,在主函数中只会得到一行,如:
自定义函数
主要功能
这就成功了。甚至更像蟒蛇。
def get_latest(cls):
try:
return cls.objects.latest('id').id
except .. :
return 0
n = min([p.id if isinstance(p, New) else get_latest(New) for p in all_list])
o = min([p.id if isinstance(p, Old) else get_latest(Old) for p in all_list])