как использовать идентификатор пользователя Google в сущностях - Python Appengine - PullRequest
2 голосов
/ 14 ноября 2011

Я создаю сущность так:

company = dbDatafile(usOwner = user)
company.name = self.request.get("name")
company.put()

где пользователь - учетная запись Google. Теперь, когда я пытаюсь найти этого пользователя, как:

datafiles = dbDatafile.gql("WHERE usOwner = '%s'" % user.user_id())

назначить шаблону jinja2 var:

template_values = {
    'datafiles': datafiles
}

и вывод в html:

{% for datafile in datafiles %}
    >>>{{ datafile.name }}         chevrons to indicate any looping
{% endfor %}

Я не получаю вывод.

Данные находятся на панели администратора, но я не могу получить к ним доступ. Есть идеи?

Спасибо

Ответы [ 2 ]

5 голосов
/ 14 ноября 2011

Если usOwner является UserProperty, вам нужно использовать USER() в GQL:

datafiles = dbDatafile.gql("WHERE usOwner = USER(:1)", user.email())

Также не забывайте всегда использовать заполнители, а не интерполяцию строк - только то, что это не SQL, не означает, что он не уязвим для внедрения.

0 голосов
/ 14 ноября 2011

ОК, это не совсем ответ на мой вопрос, а небольшой обходной путь. Я решил использовать родительскую функцию, поэтому мой код теперь выглядит так:

company = dbDatafile(parent=db.Key.from_path('user', user.user_id()))
company.name = self.request.get("name")
company.usOwner = user
company.put()


datafiles = dbDatafile.gql("WHERE ancestor IS '%s'" % db.Key.from_path('user', user.user_id()))

Не уверен, что это идеально, но он работает и совместим с хранилищем данных высокой репликации.

...