如何在GAE中检查记录是否存在

3
我正在尝试在Django和GAE中创建一个简单的视图,该视图将检查用户是否具有个人资料实体,并为每种情况打印不同的消息。我有下面的程序,但是不知何故GAE似乎总是返回一个对象。我的程序如下:
import datetime
from django.http import HttpResponse, HttpResponseRedirect
from google.appengine.api import users
from google.appengine.ext import db
from models import Profile
import logging
def login_view(request): user = users.get_current_user() profile = db.GqlQuery("SELECT * FROM Profile WHERE account = :1", users.get_current_user()) logging.info(profile) logging.info(user) if profile: return HttpResponse("恭喜您,您的个人资料已经创建。") else: return HttpResponse("抱歉,您的个人资料未创建。")
我的模型对象Profile定义如下:
class Profile(db.Model):
    first_name = db.StringProperty()  # 名字
    last_name = db.StringProperty()  # 姓氏
    gender = db.StringProperty(choices=set(["男", "女"]))  # 性别
    account = db.UserProperty(required=True)  # 用户账户
    friends = db.ListProperty(item_type=users.User)  # 好友列表
    last_login = db.DateTimeProperty(required=True)  # 上次登录时间
感谢您的帮助。
1个回答

2

我担心你忘记执行查询了。尝试使用get()方法。它返回第一个结果,如果查询没有结果,则返回None。

profile = db.GqlQuery("SELECT * FROM Profile WHERE account = :1",
                        users.get_current_user()).get()

谢谢,那行了。有另外一双眼睛看看总是有帮助的。 - VDev
使用"SELECT key FROM Profile WHERE account = :1"会稍微快一些,因为您将创建少量对象来表示结果。 - Dave W. Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接