gpt4 book ai didi

django:如何根据 GenericForeignKey 的字段进行查询?

转载 作者:行者123 更新时间:2023-11-28 19:34:41 24 4
gpt4 key购买 nike

我是 GenericForeignKey 的新手,我无法让它在查询语句中工作。表格大致如下:

class Ticket(models.Model):
issue_ct = models.ForeignKey(ContentType, related_name='issue_content_type')
issue_id = models.PositiveIntegerField(null=True, blank=True)
issue = generic.GenericForeignKey('issue_ct', 'issue_id')

class Issue(models.Model):
scan = models.ForeignKey(Scan)

扫描创建一个问题,一个问题生成一些工单,我将问题作为工单表的外键。现在我有一个 Scan 对象,我想查询与此扫描相关的所有工单。我首先尝试了这个:

tickets = Tickets.objects.filter(issue__scan=scan_obj)

这是行不通的。然后我试了这个:

issue = Issue.objects.get(scan=scan_obj)
content_type = ContentType.objects.get_for_model(Issue)
tickets = Tickets.objects.filter(content_type=content_type, issue=issue)

还是不行。我需要知道如何在 Django 中进行此类查询?谢谢。

最佳答案

您定义的 Ticket.issue 字段将帮助您从 Ticket 实例转到它所附加的 Issue,但它不会让你倒退。您已经接近第二个示例,但您需要使用 issue_id 字段 - 您无法查询 GenericForeignKey (它只是帮助您在您检索对象时有一个 Ticket 实例)。试试这个:

from django.contrib.contenttypes.models import ContentType

issue = Issue.objects.get(scan=scan_obj)
tickets = Ticket.objects.filter(
issue_id=issue.id,
issue_ct=ContentType.objects.get_for_model(issue).id
)

关于django:如何根据 GenericForeignKey 的字段进行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11960422/

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