Python 如何检查数据存储中是否存在给定实体?

Python 如何检查数据存储中是否存在给定实体?,python,django,google-app-engine,Python,Django,Google App Engine,我正在Google App Engine中编写一个Django页面,用户可以在其中创建或编辑对象的实例并保存它。因为创建新对象和编辑现有对象的代码(几乎)相同,所以我对编辑和创建使用相同的代码。该对象称为组 在view函数的顶部,如果提供了id,我将加载组实例,如果没有提供id,我将创建一个新实例: def group_edit(request, group_id=None): if(group_id is None): group_inst = Group()

我正在Google App Engine中编写一个Django页面,用户可以在其中创建或编辑对象的实例并保存它。因为创建新对象和编辑现有对象的代码(几乎)相同,所以我对编辑和创建使用相同的代码。该对象称为组

在view函数的顶部,如果提供了id,我将加载组实例,如果没有提供id,我将创建一个新实例:

def group_edit(request, group_id=None):

    if(group_id is None):
        group_inst = Group()
    else:
        group_inst = db.get(db.Key.from_path('Group', int(group_id)))

        if(group_inst is None):
            raise Http404()
然后,视图函数的其余部分在group_inst上运行,而不知道或不关心group_inst是新实例还是现有实例。然而,有一个地方我需要知道区别:页面标题。如果用户正在创建一个新组,我想显示“创建组”,否则我想显示“编辑组-{Group.name}”

直观地说,如果对象的键为None,我只需检入模板:

<h1>
    {% if group_inst.key %}
        Edit Group - {{ group_inst.name }}
    {% else %}
        Create Group
    {% endif %}
</h1>

{%if组_inst.key%}
编辑组-{Group_inst.name}
{%else%}
创建组
{%endif%}

但是,这会引发NotSavedError。查看GAE文档,我没有看到任何有用的东西。如何检查实例是否有相应的数据存储记录?

您应该使用
has_key()
而不仅仅是访问密钥:

{% if group_inst.has_key %}

谢谢,这就解决了。这有文件记录吗?我找不到。不,好像找不到。我最初发现的。