mam 2 modele w moim kodu django:dostać kluczy obcych obiektów w jednym zapytaniu - Django
class ModelA(models.Model):
name = models.CharField(max_length=255)
description = models.CharField(max_length=255)
created_by = models.ForeignKey(User)
class ModelB(models.Model):
category = models.CharField(max_length=255)
modela_link = models.ForeignKey(ModelA, 'modelb_link')
functions = models.CharField(max_length=255)
created_by = models.ForeignKey(User)
Say MODELA ma 100 rekordów, z których wszystkie mogą lub nie mogą mieć linki do ModelB
teraz mówią, że chcą uzyskać listę każdego rekordu MODELA wraz z danymi z ModelB
zrobiłbym:
list_a = ModelA.objects.all()
Następnie, aby uzyskać dane dla ModelB musiałbym zrobić
for i in list_a:
i.additional_data = i.modelb_link.all()
Jednak ten uruchamia kwerendę na każdej instancji i. W ten sposób można uruchomić 101 zapytań.
Czy istnieje sposób, aby uruchomić to wszystko w zaledwie jednym zapytaniu. Lub co najmniej mniej niż 101 zapytań.
Próbowałem wstawić ModelA.objects.select_related().all()
, ale wydawało się, że nie ma to żadnego wpływu.
Dzięki
Wiem, że przy korzystaniu z surowego sql nie otrzymujesz zwróconego obiektu, więc czy znasz jakiś sposób przekonwertowania wyników na obiekt Django – John