选择主键的行field = null

时间:2012-06-27 05:12:55

标签: python django

我有这段代码:

object_id = request.POST.get('id')
try:
    object = request.user.object_set.get(id=object_id, flag=False)
except Object.DoesNotExist:
    object = None

我想如果object_id == None,我将永远得到object == None。但不是!如果object_id为无,我会从数据库中获得一些object!我使用远程调试并检查我第一次评估request.user.object_set.get(id=object_id, flag=False)我得到了Object实例,第二次评估这段代码时我得到了DoesNotExist异常。

我重写了这段代码,以明确检查object_id,然后要求DB获取对象。我只是好奇 - 为什么会发生这种情况?有些缓存问题?另外小记 - 它在本地机器(Windows 7)上按预期工作,它不仅仅在服务器(CentOS)上工作,而是在同一版本的Python / Django上工作。

1 个答案:

答案 0 :(得分:1)

也许你的帖子数据没有按预期发送。在运行python代码时尝试打印object_id,看看你得到了什么。您应该考虑在数据库配置中将所有PK设置为NOT NULL。要搜索空值,“无”应该这样做

尝试为帖子数据设置默认值

object_id = request.POST.get('id', None)