我在 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 的所有获胜者。我会认为这很简单,比如:
Employee
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...]>。
values()
<QuerySet[Employee1, Employee2, etc...]>
如何选择正确的值来获得所需的 QuerySet?
您可以使用以下方式过滤:
Employee.objects.filter(prizedraw__isnull=False).distinct()
这将检索至少有一个相关记录的Employees 。 PrizeDraw
PrizeDraw