2010-05-01 3 views
2

J'essaie de créer une vue simple dans Django & GAE, qui va vérifier si l'utilisateur a une entité de profil et imprime un message différent pour chaque cas. J'ai le programme ci-dessous, mais de toute façon, GAE semble toujours retourner un objet. Mon programme est ci-dessousComment vérifier l'existence d'un enregistrement dans 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 
#from accounts.views import profile 

# Create your views here. 
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("Congratulations Your profile is already created.") 
    else: 
     return HttpResponse("Sorry Your profile is NOT created.") 

Mon modèle d'objet est le profil défini comme suit:

 
class Profile(db.Model): 
    first_name = db.StringProperty() 
    last_name = db.StringProperty() 
    gender = db.StringProperty(choices=set(["Male", "Female"])) 
    account = db.UserProperty(required = True) 
    friends = db.ListProperty(item_type=users.User) 
    last_login = db.DateTimeProperty(required=True) 

Merci pour l'aide.

Répondre

2

Je crains que vous ayez oublié d'exécuter la requête. Essayez la méthode get(). Il renvoie le premier résultat ou None si la requête n'a renvoyé aucun résultat.

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

Merci qui a travaillé..aide toujours à avoir une autre paire d'yeux jeter un oeil. – VDev

+0

Il va être légèrement plus rapide de faire "SELECT ____key____ FROM Profile WHERE compte =: 1", puisque vous allez créer quelques objets pour représenter le résultat. –