Я пишу приложение 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. Теперь как правильно реализовать это.
Быстрое исправление проблемы с круговой ссылкой заключается в том, чтобы удалить referance_class при определении admin в Project
(на самом деле это не требуется только проверка).
class Project(db.Model):
admin = db.ReferenceProperty()
Он не идеален, но должен решить проблему.