Как выполнить внутреннее объединение 1 таблицы с 2 другими таблицами в Django?
У меня есть пример модели Django
class Users(models.Model):
first_name = models.CharField(max_length=255, blank=True, null=True,unique=True)
last_name = models.CharField(max_length=255, blank=True, null=True)
class TableA(models.Model):
user= models.ForeignKey(Users, on_delete=models.CASCADE)
atrribute_a_1 = models.CharField(max_length=255, blank=True, null=True,unique=True)
atrribute_a_2 = models.CharField(max_length=255, blank=True, null=True)
class TableB(models.Model):
user= models.ForeignKey(Users, on_delete=models.CASCADE)
table_a_id= models.ForeignKey(TableA, on_delete=models.CASCADE)
atrribute_b_1 = models.DecimalField(max_digits = 100, decimal_places = 8, default=0)
atrribute_b_2 = models.DecimalField(max_digits = 100, decimal_places = 8, default=0)
atrribute_b_3 = models.DecimalField(max_digits = 100, decimal_places = 8, default=0)
class TableC(models.Model):
user= models.ForeignKey(Users, on_delete=models.CASCADE)
table_a_id= models.ForeignKey(TableA, on_delete=models.CASCADE)
atrribute_c_1 = models.DecimalField(max_digits = 100, decimal_places = 8, default=0)
atrribute_c_2 = models.DecimalField(max_digits = 100, decimal_places = 8, default=0)
class TableASerializer(serializers.ModelSerializer):
class Meta:
model = TableA
fields = '__all__'
class TableBSerializer(serializers.ModelSerializer):
class Meta:
model = TableB
fields = '__all__'
class TableCSerializer(serializers.ModelSerializer):
class Meta:
model = TableC
fields = '__all__'
Я хочу выполнить это действие:
select * from TableA inner join TableB on TableA.id=TableB.table_a_id inner join TableC on TableA.id=TableC.table_a_id where TableA.id=3
Как я должен это сделать? Я пробовал использовать filter и select_related и это не сработало. как я проверил в интернете или даже в документации примеры они начинают выборку с таблицыС или таблицыВ, но в моем случае я хочу начать с таблицыА Например:
my_query=TableA.Objects.filter(id=3)....something
serializer=TableASerializer(my_query,many=False).data
В результатах я хочу получить [Все атрибуты таблицыА + Все атрибуты таблицыВ + Все атрибуты таблицыС]