Je ne sais pas comment faire un GqlQuery qui commande par une propriété de ReferenceProperty.GqlQuery OrderBy une propriété dans ReferenceProperty
Dans ce cas, je veux tout le siège, mais commande par l'id de la salle
La référence GqlQuery ne permet pas une jointure, comment abordez-vous dans ce cas?
class Room(db.Model):
id = db.IntegerProperty()
dimension = db.StringProperty(multiline=True)
une salle a beaucoup de sièges, chacun avec un id
class Seat(db.Model):
id = db.IntegerProperty()
roomId = db.ReferenceProperty(Room)
seats_query = GqlQuery("SELECT * FROM Seat ")
seats = seats_query.fetch(1000)
Alex est juste à son point, alors j'ai décidé de ne pas toucher GqlQuery, et a essayé de jouer avec le modèle Django à la place, je trouvé la solution pour trier Seat par Room'id sans avoir à ajouter un nouveau champ dans la classe Seat.
Je mets le code ici si quelqu'un a des intérêts;));) Vive)
{% regroup seats|dictsort:"roomId.id" by roomId.id as room_list %}
<ul>
{% for room in room_list %}
<li>Room: {{room.grouper}}
<ul>
{% for item in room.list %}
<li>Seat no: {{item.id}} </li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
omg, cela signifie que je n'ai pas solution pour commander le siège par ID de la salle sans ajouter de données supplémentaires à mes modèles: -s Que faire si vous avez déjà des tonnes de données dans votre base de données? –
@Hoang, vous pouvez ajouter un champ à tous les sièges existants, N à la fois, par exemple, une place de sièges par groupe devrait être bien (utiliser des files d'attente de tâches). En général, vous ne pouvez commander que par champs que vous avez - c'est une limitation clé des DB non relationnelles (en échange de l'évolutivité, etc.). –
Salut Alex, j'ai modifié la question avec réponse en utilisant le modèle Django pour résoudre mon problème;) Salutations;) –