Ok donc j'ai ce mode:liaison à l'aide GQL dans Google App Engine
class Posts(db.Model):
rand1 = db.FloatProperty()
#other models here
et ce contrôleur:
class Random(webapp.RequestHandler):
def get(self):
rand2 = random.random()
posts_query = db.GqlQuery("SELECT * FROM Posts WHERE rand1 > :rand2 ORDER BY rand LIMIT 1")
#Assigning values for Django templating
template_values = {
'posts_query': posts_query,
#test purposes
'rand2': rand2,
}
path = os.path.join(os.path.dirname(__file__), 'templates/random.html')
self.response.out.write(template.render(path, template_values))
Alors, quand une entité est ajouté un flotteur aléatoire est généré (0- 1) et puis quand j'ai besoin de saisir une entité aléatoire, je veux être en mesure d'utiliser une simple requête SELECT. erreurs Il avec:
BadArgumentError('Missing named arguments for bind, requires argument rand2',)
Maintenant, cela fonctionne si je vais:
posts_query = db.GqlQuery("SELECT * FROM Posts WHERE rand1 > 1 ORDER BY rand LIMIT 1")
donc clairement ma requête est faux; comment peut-on utiliser une variable dans une instruction WHERE: S
Yay, grâce - c'est le fixe: P Bien qu'il soit fait: OÙ RAND1>: 1 ORDER BY LIMITE RAND1 1" , RAND2 J'ai accidentellement eu 'rand' au lieu de 'rand1', au cas où d'autres se demandaient et avaient besoin d'aide. –