gpt4 book ai didi

python - 从 Django 中的通用外键获取值

转载 作者:行者123 更新时间:2023-12-01 04:22:38 27 4
gpt4 key购买 nike

我有一个使用通用外键定义的模型,如下所示:

class Status(models.Model):
request_type = models.ForeignKey(ContentType)
request_id = models.PositiveIntegerField()
request = GenericForeignKey('request_type', 'request_id')

当我使用普通查询集获取关系时,它工作正常。

statuses = Status.objects.all()
for status in statuses:
print status.request.name

这会正常打印所有名称。

但是我使用的是 Django eztables,它依赖于获取像这样的值

statuses = Status.objects.all().values('request__name')

但是当我尝试这个时,我得到:

FieldError: Cannot resolve keyword 'request' into field. Choices are: request_id, request_type, request_type_id

有没有办法在 Django 中实现这一点?

最佳答案

我明白了。

您必须使用如下名称定义对象:

class Status(BaseRequestStatus):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
... more data

然后在您想要过滤的对象中,您必须创建反向通用关系:

class Request(models.Model):
statuses = GenericRelation(Status, related_query_name='request')
... other data

最后你可以做一些有趣的事情,比如

statuses = Status.objects.all().values('request__name')

Status.objects.filter(request__name__contains="stack overflow")

关于python - 从 Django 中的通用外键获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33533523/

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