Installation details
#ScyllaDB version: latest
#Cluster size:1
os (RHEL/CentOS/Ubuntu/AWS AMI): docker
from django_cassandra_engine.models import DjangoCassandraModel
from cassandra.cqlengine import columns
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from django.utils import timezone
import uuid
class UserManager(BaseUserManager):
def create_user(self, username, email, password=None, **extra_fields):
if not email:
raise ValueError(‘The Email field must be set’)
email = self.normalize_email(email)
user = self.model(
username=username,
email=email,
**extra_fields
)
if password:
user.set_password(password)
user.save()
return user
class User(AbstractBaseUser, DjangoCassandraModel):
Primary key for Cassandra
user_id = columns.UUID(primary_key=True, default=uuid.uuid4)
# Required fields with index for search optimization
username = columns.Text(primary_key=True) # Add as a clustering column for uniqueness
email = columns.Text(index=True) # Use index instead of unique
# Additional fields
first_name = columns.Text()
last_name = columns.Text()
# Timestamp fields
date_joined = columns.DateTime(default=timezone.now)
# Manager
objects = UserManager()
# Meta Configuration
class Meta:
get_pk_field = "user_id"
abstract = False
managed = True
# Django required fields
USERNAME_FIELD = 'username'
EMAIL_FIELD = 'email'
REQUIRED_FIELDS = ['email']
def __str__(self):
return self.username
@property
def is_authenticated(self):
return True
@staticmethod
def is_anonymous():
return False
PS D:\codes\Galileo\galileo> python manage.py sync_cassandra
Traceback (most recent call last):
File “D:\codes\Galileo\galileo\manage.py”, line 22, in
main()
File “D:\codes\Galileo\galileo\manage.py”, line 18, in main
execute_from_command_line(sys.argv)
File “C:\Users\hp\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management_init.py”, line 442, in execute_from_command_line
utility.execute()
File “C:\Users\hp\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\managementinit_.py”, line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File “C:\Users\hp\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\base.py”, line 412, in run_from_argv
self.execute(*args, **cmd_options)
File “C:\Users\hp\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\base.py”, line 453, in execute
self.check()
File “C:\Users\hp\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\base.py”, line 485, in check
all_issues = checks.run_checks(
File “C:\Users\hp\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\checks\registry.py”, line 88, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File “C:\Users\hp\AppData\Local\Programs\Python\Python310\lib\site-packages\django\contrib\auth\checks.py”, line 84, in check_user_model
if isinstance(cls().is_anonymous, MethodType):
File “C:\Users\hp\AppData\Local\Programs\Python\Python310\lib\site-packages\django\db\models\base.py”, line 511, in init
if field.attname not in kwargs and field.column is None or field.generated:
AttributeError: ‘UUID’ object has no attribute ‘column’. Did you mean: ‘db_column’?