Переход с модели Google App Engine на чистую систему Django - PullRequest
1 голос
/ 07 февраля 2012

Как я могу переписать этот код, специфичный для AppEngine, для чистой системы Django Model (без google api)

class A(db.Model):
    name = db.StringProperty(multiline=True)
    description = db.TextProperty()
    isAdvanced = db.BooleanProperty()
    foos = db.ListProperty(db.Key)    
    bar = db.IntegerProperty()

    def get_foos(self):
        return db.get(self.foos)

Ответы [ 3 ]

4 голосов
/ 07 февраля 2012

AFAIK, вам придется сделать это вручную. К счастью, Django может сделать большую часть работы за вас.

Сначала убедитесь, что в settings.py установлены соответствующие настройки базы данных. Вы можете найти подробное описание конфигурации базы данных здесь .

Когда закончите, запустите python manage.py inspectdb > models.py. Он выведет вывод manage.py, который создает код Python для моделей, в models.py, который затем можно добавить в соответствующее приложение Django. Вам придется перепроверить, но это займет гораздо меньше усилий.

Кроме того, из личного опыта, если он столкнется с какими-либо проблемами, он сообщит вам. Например, поля money и MySQL currency в PostgreSQL не распознаются моделями Django, поэтому он будет выдавать models.TextField(), за которым следует # This is a guess..

РЕДАКТИРОВАТЬ: Только что нашел эту статью, когда Googling для него: Миграция с Google App Engine на Django

РЕДАКТИРОВАТЬ 2: Я только что понял, что, вероятно, не ответил на ваш вопрос. Вот так (примерно) это выглядело бы, хотя я все равно рекомендую запустить python manage.py inspectdb > models.py.

from django.db import models

class A(models.Model):
    name = models.TextField()
    description = models.TextField()
    isAdvanced = models.BooleanField()
    foos = # Dunno, a quick Google search doesn't turn up the equivalent
    bar = models.IntegerField()

Чтобы получить атрибут multiline для name, вы можете взглянуть на этот вопрос в группах Google или Google самостоятельно.

2 голосов
/ 08 февраля 2012

Ответ Эдвина - хорошее начало.

Я использовал django-nonrel вместо базового django.

django-nonrel поставляется с модулем djangotoolbox, который предлагает оболочку ListField для google ListProperty. Обычный джанго не имеет эквивалента.

0 голосов
/ 07 февраля 2012

Насколько я знаю, вы должны переписать весь код, связанный с БД, вручную. Я в похожей ситуации. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...