Django QuerySets return the PK of the associated objects but I need the attribute name. For example Sitting.objects.filter(complete=True).values('user') would return a QuerySet like: <QuerySet[{'user':2}, {'user':3}]>. How do I easily convert the 2 to user.get_full_name() or such?
To give an idea of what I was trying:
tests_taken = Sitting.objects.filter(complete=True).values('user')
for test in tests_taken:
   try:
      tests_taken[test]['user'] = Employee.objects.get(pk=test['user'])
   except TypeError:
      pass
print(tests_taken)
It just seems really inefficient and I am not really sure what to do from here.
This:
qs = Sitting.objects.filter(complete=True).values('user')
tests_taken = [{'user': Employee.objects.filter(pk=user).get_full_name()} for user in qs]
print(tests_taken)
Gives this error:
int() argument must be a string, a bytes-like object or a number, not 'dict'
Models:
class Sitting(models.Model):
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        verbose_name=_("User"),
        on_delete=models.CASCADE)
class Employee(AbstractUser):
    first_name = models.CharField(max_length=64)
    last_name = models.CharField(max_length=64)
    def get_full_name(self):
        # returns self.first_name + self.last_name
My goal:
{'user':2} should be converted to {'user':'John Doe'}
 
     
    