Django join tables

Как я могу соединить нижеприведенные таблицы в представлении, чтобы получить адреса всех циферблатов в таблице DataUpload из таблицы BO.

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

Обратите внимание, что необработанный запрос практически не может быть изменен по сравнению с обычным набором запросов.

Вернуться на верх