如何为以下情况定义查询过滤器?

时间:2016-03-15 06:55:12

标签: python django django-models django-queryset

我已将模型定义如下,以及如何定义查询以过滤相关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

  4. 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

2 个答案:

答案 0 :(得分:2)

您也可以使用reverse relationships只使用一个查询:

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

答案 1 :(得分:-1)

您可以执行以下操作:

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

这将获取产品名称为A的所有Test_Product对象,然后将相应的sanity_test对象添加到列表中