繁体   English   中英

Django 连接表

[英]Django join tables

如何在视图中加入下表以从 BO 表中获取 DataUpload 表中所有 Dials 的地址。

class BO(models.Model):
  id = models.AutoField(primary_key=True)
  Dial = models.IntegerField()
  Customer_Address = models.CharField(max_length=100, null=True, blank=True)
  Wallet_Limit_profile = models.CharField(max_length=100, null=True, blank=True)

class DataUpload(models.Model):
 Dial = models.IntegerField()
 Serial = models.IntegerField(null=True)
 Bag = models.IntegerField(null=True)
 Today_Date = models.DateField(null=True)
 user = models.CharField(max_length=100)
 summary = models.ForeignKey(summary, on_delete=models.CASCADE)
 summary_text = models.CharField(max_length=100, null=True, blank=True)
 Name = models.CharField(max_length=100)
 C**ustomer_Address = models.ForeignKey(BO, on_delete=models.CASCADE, null=True, blank=True)**
 National_ID = models.IntegerField()
 Customer_ID = models.IntegerField()
 Status = models.CharField(max_length=100)
 Registration_Date = models.DateTimeField(max_length=100)
 Is_Documented = models.CharField(max_length=100, null=True)
 Needed_Action = models.ForeignKey(needed_action, on_delete=models.CASCADE, null=True, 
 blank=True)
 Hard_Copy_Type = models.ForeignKey(Hard_Copy_Type, on_delete=models.CASCADE, null=True, 
 blank=True)
 Request_Status = models.ForeignKey(Request_Status, on_delete=models.CASCADE, null=True, 
 blank=True)

通过非关系字段加入时,您需要原始 sql 查询。

bo = BO.objects.raw(
    ‘’’select 
        yourapp_bo.*, 
        yourapp_dataupload.customer_address as address 
        from yourapp_bo
        left join yourapp_dataupload using (dial);
    ‘’’, 
    params = {}
)

现在使用bo_instance.address

请注意,与普通查询集相比,原始查询几乎无法进一步更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM