I am planning write one query to get data using 3 models.
Modle 1: Emp
class Emp(models.Model):
empID = models.AutoField(primary_key=True)
empName = models.CharField(max_length=70, blank=False, default='')
empCode = models.CharField(max_length=10, blank=False, default='')
empDesc = models.CharField(max_length=200)
class Meta:
db_table = 'empolyee'
def __str__(self):
return self.empName
Model 2: Dep
class Dep(models.Model):
depID = models.ForeignKey(primary_key=True)
depName = models.CharField(max_length=200)
Emp = models.ForeignKey(EMP, on_delete=models.CASCADE, null=True)
class Meta:
db_table = 'departmen
Model 3: account
class Account(models.Model):
accountID = models.AutoField(primary_key=True)
accountName = models.CharField(max_length=200)
Emp = models.ForeignKey(Emp, on_delete=models.CASCADE, null=True)
field = models.ForeignKey(Dep, on_delete=models.CASCADE, null=True)
class Meta:
db_table = 'accounts'
I Need execute below native query (SQL):
select em.empName as fromMaster, em1.empName as toMaster from dep dp
join emp em on dp.depID = em.empID
join account ac on dp.depID = ac.field
join emp em1 on ac.empID = em1.empID
where dep.empID ='1'
But I tried with below example but I am getting differnet query.
dataReceived = account.objects.select_related(
'field __Emp ', 'Emp ').filter(Emp='1')
Could you please help me any one, how to achive this.
Thanks in advance !!!!