Работают ли светильники с отношениями в app-engine-patch? - PullRequest
0 голосов
/ 31 октября 2009

У меня есть прибор с несколькими моделями, которые я использую для тестирования. Это работает для базовых моделей, но не может создать объекты для модели с отношениями. Это известное ограничение app-engine-patch или я пропускаю что-то? Я использую JSON для файла фикстуры.

Я создаю файл фикстуры с помощью 'manage.py dumpdata --format = json >> file.json'

Вот модели участвуют:

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 в файле фикстуры выглядит так:

[
{"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"}}
]

Модель BibleBook загружается правильно, а Задача - нет. Я проверяю это следующим образом:

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

Первый тест пройден, а второй - нет.

Спасибо,

Брайан Ямабе

1 Ответ

1 голос
/ 07 ноября 2009

Спасибо, celopes, за запрос дополнительного кода. Я решил поиграть с файлом JSON и исправил проблему, используя простые числа для ПК. Вот JSON, который исправляет проблему для моделей и тестов, которые я опубликовал:

[
{"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"}}
]
...