J'essaie de déterminer le moyen le plus efficace de créer une entité votable sur le magasin de données de GAE. Je voudrais montrer à l'utilisateur un contrôle pour voter pour cette entité ou une icône indiquant qu'ils ont déjà voté pour cette entité; c'est-à-dire, je demande "a un utilisateur a voté sur cette entité?" Disons que nous avons une entité Question qu'un utilisateur peut voter. Voici ce que je pense faire:Modélisation des votes sur GAE
- Requête pour mes entités Question. Ces questions ont déjà un classement précalculé sur lequel je vais trier.
- Utilisez une entité d'index de relation qui est un enfant de l'entité Question. Requête pour toutes les questions utilisant les mêmes filtres que # 1 où mon utilisateur est membre de cette entité d'index de relation.
- Fusionnez les résultats de # 2 en # 1 en définissant une propriété hasVoted sur true pour chaque membre d'ensemble trouvé.
Ceci est la façon la plus propre que je pourrais penser de le faire, mais il nécessite encore deux requêtes. Je n'ai pas créé d'entités Question dupliquées pour chaque utilisateur, car cela entraînerait trop de duplication de données. Est-ce que cette solution est un bon moyen de gérer ce qui est effectivement une jointure entre une relation m2m entre votes et questions ou est-ce que je pense trop en relation?
Je remplacerais 'si non voté par:' avec 'si voté_on est Aucun:' parce que si 'voté_on = []' que 'si non coted_on: 'est Vrai. –
Bon point Vladimir; J'ai modifié le code - merci! –
@ David- ne serait-il pas plus simple de créer un 'db.ListProperty (db.Key)' sur l'utilisateur appelé user_votes, qui contient les clés des questions votées par l'utilisateur? – Yarin