【问题标题】:Django ORM: Tried to do inner join with foreign key but causes FieldErrorDjango ORM:尝试使用外键进行内部连接但导致 FieldError
【发布时间】:2018-04-26 21:10:57
【问题描述】:

我是 django orm 的新手。 我的表是这样的。

class Product(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4)
   name = models.CharField(max_length=60)

class ProductOption(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4)
   product_id = models.ForeignKey(Product, on_delete=models.CASCADE, null=True, blank=True)

我想查询与产品相关的productoption id。我做了这样的查询来做内部连接。

Query = Product.select_related(‘product_id’).filter(name='a')

它给了我错误消息说

django.core.exceptions.FieldError: Invalid field name(s) given in select_related: 'product_id'. Choices are: (none)

我想知道模型或查询是否有问题。

【问题讨论】:

  • 您的预期输出究竟是什么?
  • @scharette 我想获取所有产品对象并获取连接到 product_id 的 productOptions
  • _productOptions 连接到 product_i_ 我不明白你的意思?您想获得一个特定 Product 的所有 productOptions 吗?

标签: mysql django foreign-keys inner-join


【解决方案1】:

使用prefetch_related

Product.objects.filter(name='a').prefetch_related('productoption_set')

【讨论】:

    【解决方案2】:

    这不是您查询相关对象的方式。由于您使用了外键,如果我理解正确,您可能想要使用这样的东西:

     Product.objects.filter(name='a').productoption_set.all()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 2014-02-16
      • 2021-06-23
      相关资源
      最近更新 更多