Как получить QuerySet с типом атрибута ForeignKey в Django

У меня есть простая модель базы данных в 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, который содержит всех победителей всех розыгрышей призов. Я бы подумал, что это можно сделать довольно просто с помощью чего-то вроде:

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?

Вы можете фильтровать с помощью:

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

Здесь будут получены Employee те, для которых существует как минимум одна связанная PrizeDraw запись.

Вернуться на верх