Предположим, у нас есть две модели: User
и Token
.У пользователя может быть только один Token
, а Token
может принадлежать только одному пользователю.
Исходя из реляционных баз данных, следующий способ выглядит как :
class User(db.Model):
name = db.StringProperty()
class Token(db.Model):
name = db.StringProperty()
owner = db.ReferenceProperty(User)
Это, конечно, также создаст User.token_set
, то есть db.Query
.Но я бы очень хотел получить доступ к токену, скажем, User.token
вместо User.token_set.get()
, так как насчет ..
class User(db.Model):
name = db.StringProperty()
token = db.ReferenceProperty(Token)
class Token(db.Model):
name = db.StringProperty()
owner = db.ReferenceProperty(User)
Теперь я могу получить к ним двунаправленный доступ: User.token
& User.owner
.И просто игнорируйте тот факт, что у меня есть эти автоматически созданные .token_set
и user_set
.
Что-то не так с этим?С логической стороны, с точки зрения производительности?
Может быть, у меня не должно быть даже двух моделей.Оба они на практике содержат четыре-пять свойств.Должны ли они просто быть одним?Когда отношения «один к одному» должны быть разорваны, просто объединены в одну модель?
Спасибо за любой вклад!