Python Django 1.5选择与多表继承相关的延迟
编辑:Python Django 1.5选择与多表继承相关的延迟,python,django,django-select-related,multi-table-inheritance,Python,Django,Django Select Related,Multi Table Inheritance,编辑: 我修正了下面的几个拼写错误 我在一个小应用程序中添加了一个zip文件来演示这个问题。您可以下载它并在syncdb和迁移之后运行python manage.py testselectrelateddefer 我在下面添加了一些观察结果 我修复了我的多表继承模型,如下所示: class Image(models.Model): # other fields are removed for simplicity image = models.ImageField(upload_
class Image(models.Model):
# other fields are removed for simplicity
image = models.ImageField(upload_to="image")
class ItemImage(Image):
# other fields are removed for simplicity
display_name = models.CharField(max_length=50)
我想查询此模型,并在不需要图像(位于父模型中)时延迟图像字段。我的容器模型看起来有点像这样:
class Item(models.Model):
item_image = models.OneToOneField(ItemImage)
test.models.Item.objects.select_related('item_image').defer("item_image__image").get(pk=1)
查询如下所示:
class Item(models.Model):
item_image = models.OneToOneField(ItemImage)
test.models.Item.objects.select_related('item_image').defer("item_image__image").get(pk=1)
Django抛出的错误是:
ValueError: u'image_ptr_id' is not in the list.
如果查询不在父模型中的字段,Django不会引发错误:
test.models.Item.objects.select_related('item_image').defer("item_image__display_name").get(pk=1)
你知道如何解决这个问题吗
意见:
你能发布你的确切模型结构吗?它将帮助我们尝试并调试您的错误。@schillingt:不确定您希望进一步做什么。我添加了一个测试程序的zip文件,您可以运行它来查看问题。