Я пишу приложение списка ToDo, чтобы помочь мне начать работу с Python. Приложение работает на GAE, и я храню объекты todo в хранилище данных. Я хочу отображать все элементы для них, и только они. Проблема в том, что приложение в настоящее время отображает все элементы для всех пользователей, поэтому я могу видеть, что вы пишете, и вы видите, что я пишу. Я думал, что отличать объект todo.author до строки и видеть, совпадает ли она с именем пользователя, было бы хорошим началом, но я не могу понять, как это сделать.
Это то, что у меня есть в моей main.py
...
user = users.get_current_user()
if user:
nickname = user.nickname()
todos = Todo.all()
template_values = {'nickname':nickname, 'todos':todos}
...
def post(self):
todo = Todo()
todo.author = users.get_current_user()
todo.item = self.request.get("item")
todo.completed = False
todo.put()
self.redirect('/')
В моем index.html у меня было это первоначально:
<input type="text" name="item" class="form-prop" placeholder="What needs to be done?" required/>
...
<ul>
{% for todo in todos %}
<input type="checkbox"> {{todo.item}} <hr />
{% endfor %}
</ul>
но я хотел бы отображать элементы только для пользователя, который их создал. Я думал о попытке
{% for todo in todos %}
{% ifequal todo.author nickname %}
<input type="checkbox"> {{todo.item}} <hr />
{% endifequal %}
{% endfor %}
безрезультатно. Список становится пустым. Я предположил, что это потому, что todo.author не является строкой. Могу ли я прочитать значение в виде строки или я могу передать объект в String?
Спасибо!
Изменить: Вот мой класс Todo
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
Изменит ли мой автор на эффект StringProperty что-нибудь отрицательное? Может быть, я могу отказаться от кастования вообще.