Как определить модели с множественными отношениями в Google App Engine?

1

Я пишу приложение Google App Engine, которое имеет модель данных с множественными отношениями. Я думаю, что делаю это неправильно. Определение моего класса модели данных:

class Project(db.Model):
    name = db.StringProperty()
    description = db.TextProperty()
    admin = db.ReferenceProperty(Appuser)
    website = db.LinkProperty()
    members = db.ListProperty(db.key, default=None)
    start_date = db.DateTimeProperty(auto_add_now = True)

class Appuser(db.Model):
    user_id = db.UserProperty()
    fullname = db.StringProperty()
    website = db.LinkProperty()
    involved_projects = db.ListProperty(db.key, default=None)
    current_project = db.ReferenceProperty(Project)

Теперь, когда я пытаюсь запустить это, я получаю сообщение об ошибке Appuser is not defined в файле. Это происходит потому, что класс Appuser определяется после Project. Я не мог изменить порядок, так как класс Appuser также имеет ReferenceProperty для класса Project Я бы получил не определенную ошибку для Project. Теперь как правильно реализовать это.

  • 0
    У SO было несколько вопросов по этому поводу: http://stackoverflow.com/questions/4347671/ , и Ник объясняет в своем блоге 2 стратегии: таблицу соединений или список ключей .
  • 1
    Ваш заголовок подразумевает, что вы спрашиваете о многих-многих отношениях, но реальная проблема, кажется, с круговой ссылкой.
Показать ещё 1 комментарий
Теги:
google-app-engine
web-applications

1 ответ

2
Лучший ответ

Быстрое исправление проблемы с круговой ссылкой заключается в том, чтобы удалить referance_class при определении admin в Project (на самом деле это не требуется только проверка).

class Project(db.Model):
    admin = db.ReferenceProperty()

Он не идеален, но должен решить проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню