Внутреннее объединение не работает при сериализации данных
Подобные вопросы задавались и раньше, но я не могу использовать ни один из ответов для своего случая.
Желаемый (SQL) запрос:
SELECT project.name, invitation.*
FROM invitation
INNER JOIN project ON invitation.project_id_id=project.id;
Модели:
class project(models.Model):
project_code = models.CharField(max_length=250, null=False, blank=False)
internal_code = models.CharField(max_length=250, null=True, blank=True, unique=True)
name = models.CharField(max_length=250, null=False, blank=False)
class invitation(models.Model):
project_id = models.ForeignKey(
project,
on_delete=models.CASCADE
)
country = models.CharField(
max_length=250,
null=False,
blank=False,
)
Желаемый результат после запроса:
| project.name | invitation.project_id | invitation.country |
|---|---|---|
| Project_1 | 1 | Madagascar |
| Project_2 | 2 | Laos |
Вид:
def search(request):
if request.method == 'GET':
result = invitation.objects.select_related('project_id')
data = serialize("json", result, cls=DatetimeJSONEncoder)
return HttpResponse(data, content_type="application/json")
return HttpResponse('')
Здесь я использовал select_related, как предлагалось во многих других вопросах SO, однако, если я печатаю data (уже сериализованный), нет никаких полей из модели project. inner join не работает, я сделал что-то не так.
print(data):
[{"model": "app_name.invitation", "pk": 19, "fields": {"project_id": 1, "country": "Madagascar"}}, {"model": "app_name.invitation", "pk": 20, "fields": {"project_id": 2, "country": "Laos"}}]
print(str(result.query))
SELECT "app_name_invitation"."id", "app_name_invitation"."project_id_id", "app_name_invitation"."country", "app_name_project"."name" FROM "app_name_invitation" INNER JOIN "app_name_project" ON ("app_name_invitation"."project_id_id" = "app_name_project"."id")
Почему project.name отсутствует в сериализованных данных?