2015-09-25 63 views
0

假設我有EnvironmentAnimal之間的多對多關係,與接合表看起來像:查詢的關係的一側的子集的多對多關係

environment_id animal_id 
1    1 
1    2 
1    3 
2    1 
2    3 
3    2 
3    4 
3    5 
4    2 
4    3 
5    2 
5    4 

假設我有與一組Animal小號ID (1,2,3),我如何查詢數據庫以僅返回與這些動物相關的動物子集的環境?在這個例子中,這將是Environments與ID (1,2,4)但不是35。 如果我嘗試:

animals = Animal.objects.filter(id__in=(1,2,3)) 
animal_list = AnimalList.objects.filter(animal__in=animals) 

顯然,這並不工作,因爲他們都從我的子集中的至少一種動物。

模型類主要有:

class Environment(models.Model): 
    name = models.CharField(max_length=250) 
    animals = models.ManyToManyField(Animal, through='AnimalList') 

class Animal(models.Model): 
    name = models.CharField(max_length=200) 
    safe_around_david_cameron = models.BooleanField() 

class AnimalList(models.Model): 
    environment = models.ForeighKey(Environment) 
    animal = models.ForeignKey(Animal) 
+0

可以添加模型類的代碼? –

回答