0

我有3個模型(可以說A,B,C)。模型C具有AB作爲外鍵。現在我有A的primary_key,我想檢索相關的對象列表B對象。Django - 獲取相關對象

我希望整個對象B不只是我可以使用values()或values_list()獲得的字段。我的模型是如下:

class A(models.Model): 
    name = models.CharField(max_length=200) 
    description = models.CharField(max_length=200) 

class B(models.Model): 
    name = models.CharField(max_length=200) 
    description = models.CharField(max_length=200) 

class C(models.Model): 
    name = models.CharField(max_length=200) 
    roll_number = models.IntegerField(default=0) 
    a = models.ForeignKey(A,related_name='c_a') 
    b = models.ForeignKey(A,related_name='c_b') 
+0

嘗試此'c.objects.filter(α= primary_key_a).values( '姓名', 'roll_number',」 b__name','b__description')' –

+0

我想要B列表的對象,而不僅僅是字段 –

+0

這將爲您提供b中匹配primary_key_a的所有行以及b列表中匹配條目的數據 –

回答

0

,可以稍微修改從@Piyush S. Wanare回答這樣的:

c.objects.filter(a=primary_key_a).values('b') 

或者,如果你只是想用僅有B的對象列表,您可以使用values_list()

c.objects.filter(a=primary_key_a).values_list('b', flat=True) 

這給你一個b的平面列表(在本例中)。 values返回一個字典,values_list是相似的,但輸出是一個元組列表而不是字典。附加選項flat=True(如果僅檢索到一個字段,則工作)返回對象的平面列表,而不是對象的元組列表。

供參考的文檔: