Я не могу получить объекты с моим запросом - PullRequest
1 голос
/ 15 сентября 2011

Я использовал ту же процедуру, что и в своих предыдущих проектах, которую я извлек из уроков, предоставленных Google, но на этот раз я не получил результатов ...

Мой код состоит в том, чтобы получить 3 случайных анекдота из моего хранилища данных, в которых хранится всего 100 анекдотов, и отобразить их в таблице HTML.

Вот моя модель:

class joke(db.Model):
jokeID = db.IntegerProperty()
content = db.TextProperty()

Вот код в моем контроллере, в котором я получаю сущности:

def get(self):
deck = range(1, 101)
shuffle(deck)
items = list()
itemCounter = 0
for jokeNumber in deck:
    itemCounter += 1
    if itemCounter <= 3:
        self.response.out.write(jokeNumber)
        # I tried with fetching from the model & with GqlQuery
        #items.append(joke.all().filter('jokeID=',jokeNumber).fetch(1))
        items.append(db.GqlQuery("SELECT * FROM joke WHERE jokeID=:1",jokeNumber))
    else:
        break
template_values = {'items' : items}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path,template_values))

& вот где я заполняю таблицу HTML данными из контроллера:

<table border="0" width="800px">
     {% for item in items %}
      <form method="post" action="/ocena">
          <tr>
            <td>
                {{ item.content }}
            </td>
          </tr> 
       </form>
     {% endfor %}
   </table>

В исходном коде с сайта я получаю три пустых ячейки, но когда я выполняю запрос в средстве просмотра хранилища данных из GAE, я получаю желаемые результаты ..

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Я проверил ваш пример, и этот код работает для меня:

def get(self):
    deck = range(1, 101)
    shuffle(deck)
    items = db.GqlQuery("SELECT * FROM joke WHERE jokeID IN :1", deck[:3])
    template_values = {'items' : items}
    path = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(template.render(path,template_values))
0 голосов
/ 16 сентября 2011

Мой код для получения 3 случайных

def get_random_joke(self, category):
    jokeinfo = JokeData.all().filter("category =", category)
    return jokeinfo[random.randint(0, jokeinfo.count()-1)] 

Я думаю, что приведенный выше код будет работать для получения одной случайной шутки из категории в хранилище данных, если у вас есть категории.

...