得到了用户和角色。我怎样才能得到用户注解的角色?
from django.db import models, F, Q
class User(models.Model):
pass
class Role(models.Model):
...
user_id = models.PositiveIntegerField(
verbose_name='Related object ID'
)
我想做这样的事情:
roles = Role.objects.all()
roles = roles.annotate(user=Q(User.objects.get(id=F('user_id'))))
for role in roles:
print(role.user.id) => 123
追溯:
FieldError: Cannot resolve keyword 'user_id' into field
PS:我不需要外键或ManytoMany,我需要的正是这个关系。
1条答案
按热度按时间ruarlubt1#
您在问题中提到的解决方案在这里不起作用,因为
F(...)
查询指向User模型本身,而不是Role模型,因此无法解析字段。另外,我推荐@Iain在评论部分提到的内容,因为这样你就可以直接从Role对象访问user对象,你可以考虑OneToOne关系。
另一方面,如果您不想在模型中有关系,那么您最多可以从User模型访问一个字段,如下所示(使用子查询):