2009-10-31 5 views
0

J'ai un appareil avec plusieurs modèles que j'utilise pour tester. Il fonctionne pour les modèles de base, mais ne parvient pas à créer les entités pour les modèles avec des relations. Est-ce une limitation connue de l'app-engine-patch ou est-ce que je manque quelque chose? J'utilise JSON pour le fichier d'appareils.Est-ce que les appareils avec des relations fonctionnent dans un app-engine-patch?

Je crée le fichier projecteur avec 'manage.py dumpdata --format = JSON >> file.json'

Voici les modèles impliqués:

class BibleBook(db.Model): 
    name = db.StringProperty(required=True) 
    description = db.TextProperty(required=True) 

class Task(db.Model): 
    name = db.StringProperty(required=True) 
    description = db.TextProperty(required=True) 
    energy = db.IntegerProperty(default=1) 
    focus = db.IntegerProperty(default=0) 
    empathy = db.IntegerProperty(default=0) 
    denarii = db.IntegerProperty(default=0) 
    talents = db.IntegerProperty(default=0) 
    experience = db.IntegerProperty(default=1) 
    percent_per_task = db.IntegerProperty(default=5) 
    bibleBook = db.ReferenceProperty(BibleBook) 
    level = db.StringProperty(required=True, choices=set(["Catachumen", "Laymen", "Elder"])) 
    drop_percentage = db.IntegerProperty(default=10) 

JSON dans le dispositif le fichier ressemble à ceci:

[ 
{"pk": "ag5sYXctYW5kLWdvc3BlbHIcCxIWbGF3YW5kZ29zcGVsX2JpYmxlYm9vaxgDDA", 
"model": "lawandgospel.biblebook", 
"fields": {"name": "Luke", "description": "Description"}}, 

{"pk": "ag5sYXctYW5kLWdvc3BlbHIXCxIRbGF3YW5kZ29zcGVsX3Rhc2sYBQw", 
"model": "lawandgospel.task", 
"fields": {"empathy": 0, "name": "Study Luke", "level": "Catachumen", "energy": 1, 
"focus": 0, "experience": 1, "drop_percentage": 10, "talents": 0, 
"bibleBook": "ag5sYXctYW5kLWdvc3BlbHIcCxIWbGF3YW5kZ29zcGVsX2JpYmxlYm9vaxgDDA", 
"percent_per_task": 5, "denarii": 0, "description": "The Book of Luke"}} 
] 

Le modèle BibleBook se charge correctement, mais pas la tâche. Je vérifie cela en faisant:

books = BibleBook.gql('') 
self.assertEquals(books.count(), 1) 
tasks = Task.gql('') 
self.assertEquals(tasks.count(), 1) 

Le premier passe test, mais pas le second.

Merci,

Brian Yamabe

+2

Comment avez-vous créé les appareils? Pourriez-vous fournir un échantillon des appareils, y compris les modèles dans lesquels la charge est défaillante? – cethegeek

Répondre

1

Merci, celopes, pour demander le code supplémentaire. J'ai décidé de jouer avec le fichier json et de régler le problème en utilisant des nombres simples pour les pk. Voici le JSON qui résout le problème pour les modèles et les tests que j'ai publiés:

[ 
{"pk": "1", 
"model": "lawandgospel.biblebook", 
"fields": {"name": "Luke", "description": "The Gospel According to St. Luke."}}, 

{"pk": "2", 
"model": "lawandgospel.task", 
"fields": {"empathy": 0, "name": "Study the Gospel of Luke", "level": "Catachumen", 
"energy": 1, "focus": 0, "experience": 1, "drop_percentage": 10, "talents": 0, 
"bibleBook": "1", "percent_per_task": 5, "denarii": 0, 
"description": "The Book of Luke"}} 
] 
Questions connexes