2016-03-15 71 views
3

我已經定義了我的模型如下,以及如何定義一個查詢來過濾相關Test_Product的產品名稱在指定名稱列表中的Sanity_Test集合?非常感謝如何爲以下情況定義查詢過濾器?

例如:

  1. Sanity_Test_A包含Test_Product_A(產品名稱爲A),Test_Product_B(產品名稱爲B)

  2. Sanity_Test_B包含Test_Product_C(產品名稱爲A),Test_Product_D(產品名稱爲C)

  3. 我想過濾Sanity_Test記錄列表,它是Test_Product記錄的產品名稱是A

APP:CT.model

class Sanity_Test(models.Model): 

    build  = models.OneToOneField('CI.Build')               
    system_test = models.ForeignKey(System_Test,null=True,blank=True) 

    ...... 


class Test_Product(models.Model): 

    product  = models.ForeignKey('CI.Product',verbose_name='Product')    
    sanity_test = models.ForeignKey(Sanity_Test) 

    ...... 


# APP : CI.model 
class Product(models.Model): 

    name = models.CharField(max_length=255,unique=True) 

    ...... 

The Test_Product Record Info

回答

-1

你可以這樣做:

sanity_test = [ test_product.sanity_set for test_productin Test_Product.objects.filter(product__name='A')] 

這被所有Test_Product與產品名稱的對象,然後將相應的將sanity_test對象添加到列表中

+0

這就是我所期待的,非常感謝你對你的好心幫:) – JiangLing

2

您也可以使用reverse relationships只有一個查詢做到這一點:

sanity_test = Sanity_Test.objects.filter(test_product__product__name='A') 
+0

是的,因爲'test_product'有一個外鍵'sanity_test'。它被稱爲「反向關係」。從文檔中可以看出:「它也可以倒退,爲了引用」反向「關係,只需使用模型的小寫字母。」 – ilse2005

+1

強大的django,非常感謝^ O ^ – JiangLing

相關問題