Django newbie here! I am coming from .NET background I am frustrated as to how to do the following simple thing:
My simplified models are as follows
class Circle(BaseClass):
    name = models.CharField("Name", max_length=2048, blank=False, null=False)
    active = models.BooleanField(default=False)
    ...
class CircleParticipant(BaseClass):
    circle = models.ForeignKey(Circle, on_delete=models.CASCADE, null=True, blank=True)
    user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
    status = models.CharField("Status", max_length=256, blank=False, null=False)
    ...
class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(verbose_name="Email", unique=True, max_length=255, validators=[email_validator])
    first_name = models.CharField(verbose_name="First name", max_length=30, default="first")
    last_name = models.CharField(verbose_name="Last name", max_length=30, default="last")
    ...
My goal is to get a single circle with participants that include the users as well. With the extra requirement to do all that in a single DB trip.
in SQL terms I want to accomplish this:
SELECT circle.name, circle.active, circle_participant.status, user.email. user.first_name. user.last_name
FROM circle
JOIN circle_participant on circle.id = circle_participant.id
JOIN user on user.id = circle_participant.id
WHERE circle.id = 43
I've tried the following:
Circle.objects.filter(id=43) \
    .prefetch_related(Prefetch('circleparticipant_set', queryset=CircleParticipant.objects.prefetch_related('user')))
This is supposed to be working but when I check the query property on that statement it returns
SELECT "circle"."id", "circle"."created", "circle"."updated", "circle"."name", "circle"."active", FROM "circle" WHERE "circle"."id" = 43
(additional fields omitted for brevity.)
Am I missing something or is the query property incorrect?
More importantly how can I achieve fetching all that data with a single DB trip.
For reference here's how to do it in .NET Entity Framework
dbContext.Circle
  .Filter(x => x.id == 43)
  .Include(x => x.CircleParticipants) // This will exist in the entity/model
  .ThenInclude(x => x.User)
 
     
    