Sto scrivendo un'app ToDo list per iniziare con Python. L'app è in esecuzione su GAE e sto archiviando elementi todo in Data Store. Voglio mostrare gli articoli di tutti a loro e solo loro. Il problema è che l'app attualmente mostra tutti gli elementi a tutti gli utenti, quindi posso vedere cosa scrivi e tu vedi cosa scrivo. Ho pensato che lanciare il mio oggetto todo.author su una stringa e vedere se corrisponde al nome dell'utente sarebbe stato un buon inizio, ma non riesco a capire come farlo.
Questo è quello che ho nel mio 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('/')
Nel mio index.html avevo questo originariamente:
<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>
ma vorrei mostrare gli elementi solo all'utente che li ha creati. Ho pensato di provare
{% for todo in todos %}
{% ifequal todo.author nickname %}
<input type="checkbox"> {{todo.item}} <hr />
{% endifequal %}
{% endfor %}
inutilmente. L'elenco risulta vuoto. Ho pensato che fosse perché todo.author non è una stringa. Posso leggere il valore come una stringa o posso eseguire il cast dell'oggetto su String?
Grazie!
Modifica: ecco la mia classe di cose da fare
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
Cambiare il mio autore in StringProperty avrà un effetto negativo? Forse posso rinunciare del tutto al casting.
TemplateSyntaxError: Could not parse the remainder: '(todo.author)' from 'str(todo.author)'
qualche idea?