Я получаю сообщение об ошибке при доступе к переменной экземпляра класса и назначении их.Когда я использую функцию форматирования для преобразования значения переменной экземпляра, это работает хорошо.
Код, который выдает ошибку:
task.update({
'email': self.email,
Ошибка
raise ValueError('Unknown protobuf attr type', type(val))
ValueError: ('Unknown protobuf attr type', <class 'tuple'>)
Код, который работает при использовании функции форматирования:
logger.log_text('email {}'.format(self.email))
Созданиеэкземпляр класса
user = User(post_data)
user.create()
Класс
class User(object):
""" User Model for storing user related details """
__tablename__ = 'Users'
def __init__(self, data, admin=False):
bcrypt = Bcrypt()
self.email = data.get('email'),
self.password = bcrypt.generate_password_hash(
data.get('email'), 12
).decode()
self.is_admin = admin
self.firstname = "firstname"
self.middlename = "middlename"
self.lastname = "lastname"
self.address = "address"
self.is_active = True
self.ds = datastore.Client()
def create(self):
"""
Create User
:return: string
"""
logger.log_text("create user")
with self.ds.transaction():
incomplete_key = self.ds.key(self.__tablename__)
task = datastore.Entity(key=incomplete_key)
task.update({
'email': self.email,
'password': '{}'.format(self.password)
})
self.ds.put(task)