2009-05-26 5 views
0

ich ein Django-Modell für Google App Engine erstellt haben,die maximale Rekursionstiefe einstellen, während ein Django-Modell mit Fremdschlüssel für JSON Serialisierung

Model A(): 
    propA = ReferenceProperty(B) 

Model B(): 
    propB = ReferenceProperty(C) 

Model C(): 
    propC = ReferenceProperty(B) 

ich geschrieben benutzerdefinierte Django Serializer haben, die die Daten für die Reference holen wird (s) und serialisieren Sie das entlang des ursprünglichen Modells. Das Problem tritt auf, wenn ich versuche, eine Instanz von Modell A zu serialisieren. Meine benutzerdefinierten Serializer werden versuchen propA, zu erhalten, die einen Verweis auf Modell C enthält so der Serializer Modell C, die einen Verweis auf Modell B enthält holen wird und die Rekursion geht weiter und weiter. Gibt es eine Möglichkeit, die Rekursion nach einer Tiefe von etwa 2 ??

Mein Serializer ist eine angepasste Version von link text

P. S: Ich bin bereit, meinen Code zu veröffentlichen, wenn das zu benötigt scheint. Ich habe den Code derzeit nicht angehängt, da ich nicht auf meiner Entwicklungsmaschine bin.

Danke,
Arun Shanker Prasad.

Antwort

0

Warum machst du Rekursion nicht richtig? Jede rekursive Operation muss eine base case haben, sonst wird es für immer fortfahren, wie Ihr Problem anzeigt.

2

Ändern Sie einfach Ihre Funktionen, um ein "Tiefen" -Argument zu erstellen. Jedes Mal, wenn Sie einer ReferenceProperty folgen, rufen Sie die Funktion mit der Tiefe 1 weniger als die Tiefe auf, die übergeben wurde. Wenn eine Funktion mit depth == 0 aufgerufen wird, geben Sie None oder den anderen Platzhalterwert in Ihrem Fall zurück.

0

Ich versuche einen Serializer zu finden, der mit Google App Engine funktioniert und Beziehungen verfolgt. Wären Sie in der Lage, den modifizierten Code zu posten, den Sie dafür verwendet haben?

Verwandte Themen