下面的例子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我想,這是由UUID列中覆蓋to_database
方法引起的。與基地to_database
方法衝突。
UPD2看起來像不好的情況。錯誤的一步發生**dict(u)
解決方案:
d = dict(u)
del d['column_with_default_value']
Users.create(**d)
您將如何引發'create'方法的財產?我使用密碼屬性,設置密碼字段和鹽。 –
是的,我不想照顧手動創建UUID的:) –
如果您將屬性傳遞給'create' - 您將收到錯誤'ValidationError:錯誤的列傳遞:set(['password'])'in目前的情況。 –