J'essaie de comprendre les relations 1-à-plusieurs dans le magasin de données; mais je ne parviens pas à comprendre comment interroger et mettre à jour l'enregistrement d'un utilisateur lorsque le modèle comprend ReferenceProperty
. Dire que j'ai ce modèle:Comment interroger le magasin de données lors de l'utilisation de ReferenceProperty?
class User(db.Model):
userEmail = db.StringProperty()
userScore = db.IntegerProperty(default=0)
class Comment(db.Model):
user = db.ReferenceProperty(User, collection_name="comments")
comment = db.StringProperty()
class Venue(db.Model):
user = db.ReferenceProperty(User, collection_name="venues")
venue = db.StringProperty()
Si je comprends bien, le même utilisateur, identifié de manière unique par userEmail
peut avoir de nombreux commentaires et peut être associé à de nombreux lieux (restaurants, etc.)
Maintenant, disons l'utilisateur [email protected]
est déjà dans la base de données et il soumet une nouvelle entrée.
Based on this answer je fais quelque chose comme:
q = User.all()
q.filter("userEmail =", [email protected])
results = q.fetch(1)
newEntry = results[0]
Mais je ne suis pas certain que cela fait! Ce que je veux faire est de mettre à jour les champs comment
et venue
qui sont sous class Comment
et class Venue
.
Pouvez-vous m'aider à comprendre comment cela fonctionne? Merci.
Bonne explication, très utile, merci. Mais je ne comprends toujours pas comment j'ajoute un nouveau lieu associé à l'utilisateur. Dans l'exemple que vous donnez, j'attrape un lieu qui se trouve déjà dans la base de données et le modifie. Mais cet utilisateur est en train de poster un nouveau commentaire sur un nouveau lieu. – Zeynel
Voir la mise à jour ci-dessus. – vonPetrushev
Un grand merci pour votre aide avec cette question (en particulier, vos commentaires ligne par ligne). – Zeynel