Как получить 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
запись.