gpt4 book ai didi

django - 如何在 values_list 查询中使用 Django GenericRelation

转载 作者:行者123 更新时间:2023-12-01 15:27:44 26 4
gpt4 key购买 nike

我的 Django 应用程序中有这两个模型:

class ItemOrigin(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
[...]

class Place(models.Model):
name = models.CharField(max_length=256)
origins = generic.GenericRelation(ItemOrigin)
[...]

在 Django 1.4 中,以下查询用于工作:

ItemOrigin.objects.values_list('id', 'place')

但是自升级到 Django 1.6 后,该查询生成了以下错误消息:

FieldError: Cannot resolve keyword 'place' into field. Choices are: content_type, created, dubitable, evidence, historical_item, id, legacy_id, modified, object_id

我可能在升级说明中遗漏了一些内容,但我看不到任何与此类查询相关的兼容性中断的提及。

所以我的问题是:为什么它不再有效,更重要的是,我如何修复它才能使相同的查询正常工作。我更喜欢查询代码未修改(太多)的解决方案,因为它比我的应用程序中的模型定义更难更改。这是因为我的动态查询系统和 values_list 中传递的字段列表是从配置文件派生的。

最佳答案

这在 Django < 1.6 中有效,但未经测试和记录。有一个open ticket here .

要解决此问题,您可以这样做:

ctype = ContentType.objects.get_for_model(Place)
pk_list = ItemOrigin.objects.filter(
content_type=ctype
).values_list('object_id', flat=True)
places = Place.objects.filter(pk__in=pk_list)

关于django - 如何在 values_list 查询中使用 Django GenericRelation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com