【发布时间】:2019-02-09 15:43:27
【问题描述】:
您好,我是 python 的新手,第一次在 mysql 中实现 ORM。
下面是我们用来创建模型的代码
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
我们正在尝试获取与User 关联的所有Roles,但它为roles 提供了None。
我不确定,我们在这里做错了什么。谁能指出来。
下面是我用来获取角色的代码
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"
【问题讨论】:
-
您需要显示用于获取角色的代码。
-
你的代码是什么?
-
@DanielRoseman 请看一下,我已经更新了代码
-
@rakwen 请看一下,我已经更新了代码
-
没有办法打印无。它将打印“ManyRelatedManager”,因为角色是一个多对多字段,可让您访问相关角色的查询集
标签: python django django-models