/ / Django ORM क्वेरी कई इनर जॉइन - django, orm, inner-join

कई आंतरिक जुड़ने के साथ Django ORM क्वेरी - django, orm, आंतरिक-शामिल

मैं जिंजो ओआरएम का उपयोग करते हुए कई आंतरिक जुड़ाव वाले प्रश्नों को करने में सक्षम होना चाहता हूं, यहां मेरा मॉडल (केवल प्रासंगिक फ़ील्ड दिखा रहा है)

class PuntoMedida(models.Model):
id_punto_medida = models.AutoField(primary_key=True,db_column="id_punto_medida")
nombre = models.CharField(max_length=100, blank=False,db_column="nombre")
class Meta:
db_table = "punto_medida"

class Instalacion(models.Model):
id_instalacion = models.AutoField(primary_key=True,db_column="id_instalacion")
activo = models.CharField(max_length=1, blank=False,default="1",db_column="activo")
usuarios=models.ManyToManyField(User,through="InstalacionUsuario")
class Meta:
db_table = "instalacion"

class InstanciaInstalacion(models.Model):
id_instancia_instalacion = models.AutoField(primary_key=True,db_column="id_instancia_instalacion")
id_instalacion = models.ForeignKey(Instalacion, blank=False, null=False,db_column="id_instalacion")
puntos_medida=models.ManyToManyField("PuntoMedida",through="InstInstalacionPuntoMedida")
activo = models.CharField(max_length=1, blank=True,default="1",db_column="activo")
class Meta:
db_table = "instancia_instalacion"

class InstInstalacionPuntoMedida(models.Model):
id= models.AutoField(primary_key=True,db_column="id")
id_instancia_instalacion = models.ForeignKey(InstanciaInstalacion,db_column="id_instancia_instalacion", blank=False, null=False)
id_punto_medida = models.ForeignKey("PuntoMedida",db_column="id_punto_medida", blank=False, null=False)
class Meta:
unique_together = ("id_instancia_instalacion","id_punto_medida")
db_table = "instancia_instalacion_punto_medida"

class InstalacionUsuario(models.Model):
id= models.AutoField(primary_key=True,db_column="id")
id_instalacion = models.ForeignKey(Instalacion,db_column="id_instalacion", blank=False, null=False)
id_usuario = models.ForeignKey(User,db_column="id_usuario", blank=False, null=False)
class Meta:
unique_together = ("id_instalacion","id_usuario")
db_table = "instalacion_usuario"

मैं सभी वस्तुओं से संबंधित सभी वस्तुओं को प्राप्त करना चाहता हूं, जो एक निश्चित उपयोगकर्ता देख सकता है। अब तक, मैं इस तरह से एक कच्चे sql का उपयोग कर रहा हूँ:

SELECT a.id_punto_medida, a.nombre
FROM punto_medida a
INNER JOIN instancia_instalacion_punto_medida b ON
a.id_punto_medida=b.id_punto_medida
INNER JOIN instancia_instalacion c ON
b.id_instancia_instalacion=c.id_instancia_instalacion
INNER JOIN instalacion d ON
c.id_instalacion=d.id_instalacion
INNER JOIN instalacion_usuario f ON
d.id_instalacion=f.id_instalacion
AND c.activo="1"
AND d.activo="1"
and f.id_usuario=7

हालांकि, मैं कच्चे का उपयोग बंद करने के लिए उत्सुक हूंक्वेरीज़ और केवल Django ORM का उपयोग केवल उस स्थिति में जब मुझे भविष्य में अपने डेटाबेस को बदलने की आवश्यकता है (वर्तमान में PostgreSQL का उपयोग करके, ओरेकल की ओर पलायन कर सकता है)। मैं बिना किसी सफलता के समतुल्य ORM क्वेरी बनाने की कोशिश कर रहा हूँ। कोई भी ORM विशेषज्ञ इस वाक्य रचना के साथ मेरी मदद कर सकता है या मुझे इसका उदाहरण दे सकता है कि कहाँ से शुरू करूँ? धन्यवाद अग्रिम में ...

उत्तर:

उत्तर № 1 के लिए 1

क्या आप इसे आजमा सकते हैं:

PuntoMedida.objects.filter(
instanciainstalacion__activo="1",
instanciainstalacion__id_instalacion__activo="1",
instanciainstalacion__id_instalacion__instalacionusuario_set__id_usuario=7,
)