python - 如何从django中具有外键关系的两个模型中选择值

标签 python django

我有两个模型,一个称为 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/

相关文章:

使用 Jquery、Django 和 Google App Engine 时,jQuery AJAX 请求被调用两次

python - 为什么我的 game_loop 没有定义,尽管它是?

python - 在 pandas 数据框中获取特定值

python - django 模型表单自定义字段

python - Django - 包含的 urlconf 中没有任何模式

python - 我的旧项目的 Django 1.7 迁移问题

Python concurrent.futures - 未调用方法

python - 我如何知道Python中某些坐标(存储在列表中)的二进制图像中是否有白色像素?

python - psycopg2 - 使用带有 execute_values 的 SQL 对象

python - 如何正确使用 asyncio.FIRST_COMPLETED