小编典典

如何在 Django 中获取具有 ForeignKey 属性类型的 QuerySet

all

我在 Django 中有一个简单的数据库模型,如下所示:

class Employee(Model):
    first_name = models.CharField(max_length=128)
    last_name = models.CharField(max_length=128)

class PrizeDraw(Model):
    winner = models.ForeignKey(
        Employee,
        null=True,
        on_delete=models.SET_NULL,
    )

我现在想要的是一个 QuerySet 类型Employee,其中包含所有 PrizeDraws 的所有获胜者。我会认为这很简单,比如:

def get_queryset(self):
    return PrizeDraw.objects.exclude(winner__isnull=True).values('winner')

但是,这实际上并没有返回我想要的,而是返回:

<QuerySet [{'winner': (Employee1) }, {'winner': (Employee2) }, etc...]>

根据返回值字典的values()文档,这是有道理的。但这在我需要的其余代码中对我不起作用,所以我只想选择键值对的第二个(即值)部分并将其作为看起来像 的 QuerySet 返回<QuerySet[Employee1, Employee2, etc...]>

如何选择正确的值来获得所需的 QuerySet?


阅读 64

收藏
2022-08-20

共1个答案

小编典典

您可以使用以下方式过滤:

Employee.objects.filter(prizedraw__isnull=False).distinct()

这将检索至少有一个相关记录的Employees 。 PrizeDraw

2022-08-20