如何为 3 个模型映射外键关系 Django
How to map ForeignKey Relationship Django for 3 Models
我计划使用 3 个模型编写一个查询来获取数据。
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'
我需要执行以下本机查询 (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'
但是我尝试了下面的例子,但是我得到了不同的查询。
dataReceived = account.objects.select_related(
'field __Emp ', 'Emp ').filter(Emp='1')
你能帮帮我吗,如何实现这个。
提前致谢!!!!
尝试以下查询:
dataReceived = Account.objects.select_related('Emp').select_related('field __Emp').filter(field__Emp__Dep=1(user defined field input id))
我计划使用 3 个模型编写一个查询来获取数据。
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'
我需要执行以下本机查询 (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'
但是我尝试了下面的例子,但是我得到了不同的查询。
dataReceived = account.objects.select_related(
'field __Emp ', 'Emp ').filter(Emp='1')
你能帮帮我吗,如何实现这个。
提前致谢!!!!
尝试以下查询:
dataReceived = Account.objects.select_related('Emp').select_related('field __Emp').filter(field__Emp__Dep=1(user defined field input id))