Python を使い始めるのに役立つ ToDo リスト アプリを作成しています。アプリは 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 が文字列ではないためだと思いました。値を文字列として読み取ったり、オブジェクトを文字列にキャストしたりできますか?
ありがとう!
編集:これが私のTodoクラスです
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
作成者を StringProperty に変更すると、何か悪影響がありますか? たぶん、キャストを完全にやめることができます。