Создайте набор запросов, который автоматически запрашивает объекты один к одному
Я создаю приложение django, в котором есть модель с несколькими OneToOne
отношениями:
class MyApp(BaseModel):
site_1 = models.OneToOneField(
Site, on_delete=models.CASCADE, related_name="site1", null=True
)
site_2 = models.OneToOneField(
Site, on_delete=models.CASCADE, related_name="site2", null=True
)
site_3 = models.OneToOneField(
Site, on_delete=models.CASCADE, related_name="site3", null=True
)
def __str__(self):
return self.title
class Meta:
verbose_name = "Main Application"
verbose_name_plural = "Main Application"
Когда я создаю набор запросов с помощью MyApp.objects.all()
, он возвращает объект, содержащий только первичные ключи:
{
"model": "mesoamerica.mesoamericaapp",
"pk": 1,
"fields": {
"site_1": 1,
"site_2": 2,
"site_3": 3
}
Однако я хотел бы создать набор queryset, который будет захватывать каждую из Site
моделей по pk и присоединять их к запросу, а не делать это самостоятельно. Существует ли набор queryset, который может это сделать?
Вы можете сделать следующее:
def my_app_data(request):
queryset = MyApp.objects.prefetch_related('site1', 'site2', 'site3').all()
# Serialize queryset to JSON
data = serialize('json', queryset)
# Return JSON response
return JsonResponse(data, safe=False)
но если вы хотите написать классы сериализатора для своего сайта и модели myapp, посмотрите документ: https://www.django-rest-framework.org/tutorial/1-serialization/