我有两个模型,一个称为 person,另一个称为permission,该 person 有一个名为 p_perm 的外键,它将权限模型与 perm_id 字段相关联, 我想按 id 在人员表中进行过滤,并从权限表中选择此人的相对权限值
我的模型:
class Person(models.Model):
p_id = models.AutoField(primary_key=True)
p_fname = models.CharField(max_length=20)
p_perm = models.ForeignKey(Permission,
on_delete=models.DO_NOTHING, to_field="perm_id")
class Permission(models.Model):
perm_id = models.CharField( max_length=1, unique=True,
primary_key=True)
perm_label = models.CharField( max_length=30)
我认为我已经这样做了:
x = Person.objects.get(p_id=user)
print(x.p_perm)
y = Permission.objects.get(perm_id= x.p_perm)
print(y.perm_id)
最佳答案
你可以这样做:
y = Permission.objects.get(perm_id=x.p_perm_id)
或者简单地说,这个对象可以直接从源模型实例访问:
y = x.p_perm
但是请注意,这将触发两个 SQL 查询。您可以通过让 Django ORM 知道您需要访问外键来限制一个查询:
x = Person.objects.select_related('p_perm').get(p_id=user)
y = x.p_perm
它将执行适当的连接以立即检索人员和权限。
关于python - 如何从django中具有外键关系的两个模型中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52687706/