Frage

Ich habe zwei Modelle im Verhältnis eins-zu-viele:

  

Klasse Frage (db.Model):

     
    

questionText = db.StringProperty (mehrzeilige = false)

  
     

Klasse Antwort (db.Model):

     
    

= Antworttext db.StringProperty (mehrzeilige = false)

         

Frage = db.ReferenceProperty (Frage, collection_name = 'Antworten')

  

Ich habe Front-End implementiert in Flex und Verwendung pyamf auf Lastdaten.

Wenn ich alle Antworten mit verwandten Fragen zu laden versuchen, alle Arbeiten wie gewünscht, und ich kann den Zugang Feld

  

answer.question

jedoch im Fall von Lade Fragen (z.B. durch Questions.all ()), 'question.answers' bleibt leer / null

(obwohl auf dem Server / python Seite I question.answers ohne Problem überarbeiten kann - wahrscheinlich nach faul-Laden).

So ist es möglich, alle Fragen mit Antworten zu laden?

(Ich weiß, das ist möglich in JPA Java api aber was ist Python?)

Shoud ich zusätzliche Einstellung, GQL Abfrage oder django Rahmen, damit es funktioniert?

War es hilfreich?

Lösung

In der Standardeinstellung PyAMF nicht kodieren Reference Felder, sofern sie nicht bereits durch die Service-Methode speziell geladen. Dies ist absichtlich so dass Sie am Ende nicht codiert, mehr als Sie müssen.

PyAMF sucht nach einer Sonderklasse Attribute __amf__, die es verwendet die Codierung und Decodierung Prozess für Instanzen dieses Typs anzupassen. Weitere Informationen finden Sie in der docs .

Also, zu zwingen, die Codierung aller Antworten für alle Fragen sollten Sie in der Lage zu tun:

class Question(db.Model):
    class __amf__:
        static = ('answers',)

    questionText = db.StringProperty(multiline=False)

class Answer(db.Model):
    answertText = db.StringProperty(multiline=False)
    question = db.ReferenceProperty(Question, collection_name='answers')

Zur Einstellung des statischen Attributs wird sichergestellt, dass jede Question Instanz das answers Attribut gesetzt hat (über getattr), was wiederum auf den Datenspeicher-Lookup, dass Sie benötigen.

Es ist wichtig, nicht, dass diese Einstellung ist die Anwendung breit, so dass jeder Frage wird eine Antwort Attribut hat, wie es auf der Instanz angezeigt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top