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
Обратите внимание, что необработанный запрос практически не может быть изменен по сравнению с обычным набором запросов.