Обновление
Это была моя лучшая попытка создать следующую схему ![enter image description here](https://i.stack.imgur.com/qoAtx.png)
user = self.auth.store.user_model.create_user(email,
password_raw=newpasswd)
if not user[0]: # user is a tuple
return user[1] # Error message
else:
# User is created, let's try making the references
okuser = auth_models.User.get_by_id(long(user[1].key.id()))
okuser.sponsor = auth_models.User.get_by_id(long(sponsor_id)).auth_ids
Оригинальный вопрос
Как сделать ссылку на класс расширения вуказать, какой пользователь является "спонсором" какого?«Спонсор» - это тот, кто пригласил нового пользователя, поэтому при создании мы должны сохранить его, и было бы гораздо лучше сохранить его в качестве ссылочного свойства, чем строку или список строк.
Я могу создать нового пользователяно я не знаю, как сделать ссылку, чтобы я мог сказать для одного пользователя, кто другой пользователь, который является спонсором первого пользователя, и я предполагаю, что способ моделировать это с помощью selfreferenceproperty, так как оба объекта являются пользователями, но сложностьявляется то, что это модель расширения, поэтому я не знаю, как использовать свойство ссылки.Не могли бы вы сказать мне, как это сделать, или дать мне понять, как я могу решить эту проблему наилучшим образом?
user = self.auth.store.user_model.create_user(email,
password_raw=newpasswd)
if not user[0]: # user is a tuple
return user[1] # Error message
else:
# User is created, let's try making the reference
okuser = auth_models.User.get_by_id(user[1].key.id())
okuser.sponsor = db.SelfReferenceProperty(User,
collection_name='matched_images', verbose_name='Sponsor')
Я не знаю, как выполнить последнюю часть, чтобы сохранить фактические свойства ссылкис моделью эпандо.Как это можно сделать?
Обновление
Кажется, что это невозможно сделать:
NotImplementedError: Property sponsor does not support <class 'google.appengine.ext.db.ReferenceProperty'> types.
Код:
user = self.auth.store.user_model.create_user(email,
password_raw=newpasswd)
if not user[0]: # user is a tuple
return user[1] # Error message
else:
# User is created, let's try redirecting to login page
okuser = auth_models.User.get_by_id(long(user[1].key.id()))
okuser.sponsor = db.SelfReferenceProperty(auth_models.User.get_by_id(sponsor_id),collection_name='matched_distributor')
okuser.put()
Это заставляет меня использовать строку вместо ссылки, и тогда возможно решение:
user = self.auth.store.user_model.create_user(email,
password_raw=newpasswd)
if not user[0]: # user is a tuple
return user[1] # Error message
else:
# User is created, let's try redirecting to login page
okuser = auth_models.User.get_by_id(long(user[1].key.id()))
okuser.sponsor = sponsor_id
okuser.put()