【问题标题】:how to prefetch directly unrelated fields in graphene django如何在石墨烯django中预取直接不相关的字段
【发布时间】:2021-08-06 01:14:07
【问题描述】:

我开始使用石墨烯,但有些东西我还不太了解,例如,当使用节点时,我有这个查询

{
  orders {
    edges {
      node {
        id
        fromUser {
          id
          username
          userprofile{
            image
            id
          }
        }
        toUser {
          id
          username
          userprofile{
            image
            id
          }
        }
      }
    }
  }
}

它非常好,因为它允许我获取配置文件并获取与用户相关的给定配置文件的图像,即使用户是配置文件中的外键,但是就必须完成的查询而言,它是昂贵的为了获取每个用户的个人资料

我的模型看起来像这样

class Order(models.Model):
    from_user = models.ForeignKey(User, on_delete=models.PROTECT, related_name="from_user")
    to_user = models.ForeignKey(User, on_delete=models.PROTECT, related_name="to_user")
    ....

class UserProfile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    image = models.ImageField(null=True)

以及我现在的查询

orders = Order.objects.select_related('from_user','to_user').filter(
            Q(from_user=user) |
            Q(to_user=user)
            ).order_by("-id")
return orders

如果有人能帮助我了解如何为 from_userto_user 预取配置文件,我将不胜感激,因为在这种情况下,获取配置文件确实很昂贵

【问题讨论】:

    标签: django graphql graphene-django


    【解决方案1】:

    我的坏人应该先尝试一下我的想法

    orders = PaymentOrder.objects.select_related('from_user','to_user',"from_user__userprofile","to_user__userprofile").filter(
                Q(from_user=user) |
                Q(to_user=user)
                ).order_by("-id")
    

    解决了什么问题

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 2019-12-20
      • 2020-08-11
      • 2019-05-03
      • 2020-09-05
      • 2018-01-11
      • 2020-09-01
      • 2019-08-19
      • 2019-11-30
      相关资源
      最近更新 更多