Привет, я совершенно новичок в python и впервые внедряю ORM в mysql.
у нас есть три две таблицы и одна промежуточная таблица, как показано на диаграмме ниже
ниже приведен код, который мы используем для создания моделей
class Roles(models.Model):
"""
A class that stores all the types of roles that are available to the user
"""
role_id = models.CharField(max_length=200, blank=False,primary_key=True)
role_name = models.CharField(max_length=200)
class Meta:
db_table = 'roles'
managed = False
class User(AbstractBaseUser):
# class ChannelUser(models.Model):
"""
An abstract base class implementing a fully featured User model with
admin-compliant permissions.
"""
user_id = models.CharField(max_length=200, blank=False,primary_key=True)
user_email = models.EmailField(max_length=200, blank=False, unique=True)
roles=models.ManyToManyField(
Roles,
through='UserRole',
# through_fields=('user_id', 'role_id'),
)
USERNAME_FIELD = 'user_email'
class Meta:
db_table = 'user'
managed = False
class UserRole(models.Model):
"""
A class that stores user ids and role ids
"""
user = models.ForeignKey(User, on_delete=models.PROTECT, db_column='user_id')
role = models.ForeignKey(Roles, on_delete=models.PROTECT, db_column='role_id')
timestamp = models.DateTimeField(default=timezone.now)
class Meta:
db_table = 'user_roles'
managed = False
Мы пытаемся получить все Roles
, связанные с User
, но это дает None для roles
.
Я не уверен, что мы здесь делаем неправильно. Может кто-нибудь, пожалуйста, укажите это.
Ниже приведен код, который я использую для получения ролей
user_detail = User.objects.get(user_email=username)
print(user_detail.user_email) //prints user email
print(user_detail.roles) // prints Roles.None
settings.py
AUTH_USER_MODEL = "login_api.User"