Следующий пример из python cassandra driverКассандра. По умолчанию значение столбца
class Users(Model):
username = columns.Text(index=True, required=True)
user_id = columns.UUID(index=True, default=uuid.uuid4)
email = columns.Text(primary_key=True, required=True)
passwd = columns.Text()
salt = columns.Text()
И создать объект следующим образом:
u = Users()
u.username = 'admin'
u.email = '[email protected]'
u.password = u'test' #This is property with setter
Users.create(**dict(u))
В этом случае мы получаем user_id:None
вместо user_id:uuid.uuid4
и соответствующую ошибку.
Как сделать default = uuid.uuid4
работать с меньшей болью?
UPD Я думаю, это вызвано переопределением метода to_database
в столбце UUID. Какие конфликты с базой to_database
метод.
UPD2 Похож на плохой случай. Ошибка происходит на этапе **dict(u)
Решение:
d = dict(u)
del d['column_with_default_value']
Users.create(**d)
Как Вы вызовете недвижимость в 'create' метода? Я использую свойство password, которое устанавливает поле passwd и соль. –
И да, я не хочу заботиться о создании вручную UUID :) –
Если вы передадите свойство 'create' - вы получите сообщение об ошибке' ValidationError: Неправильные столбцы переданы: set (['password']) 'in текущий случай. –