Django prefetch_related ValueError

时间:2015-10-19 11:24:36

标签: django django-orm

无法使prefetch_related生效。

这些是模特:

class Document(models.Model):
    document_type = models.CharField(max_length=1, choices=DOCUMENT_TYPE)
    document_id = models.PositiveIntegerField()
    branch = models.ForeignKey(Branch)


class OrderManager(models.Manager):

    def get_queryset(self):
        qs = super(OrderManager, self).get_queryset()
        return qs.filter(document_type=DOCUMENT_ORDER)


class Order(Document):

    objects = OrderManager()

    @property
    def items(self):
        return OrderItem.objects.filter(document=self)

    class Meta:
        proxy = True


class OrderItem(Item):

    objects = OrderItemManager()


class Item(models.Model):
    document = models.ForeignKey(Document, related_name='items')

现在打电话时:

Order.objects.all().prefetch_related('items')

错误:

ValueError: 'items' does not resolve to an item that supports prefetching - this is an invalid parameter to prefetch_related().

itemsrelated_name,为什么我会收到此错误?

Order是代理模型。

编辑: 什么时候这样做:

Document.objects.all().prefetch_related('items')

它有效。

需要解决方案才能使其在Order模式下运行。

0 个答案:

没有答案