class A(models.Model): things = models.ManyToManyField("B", through=ThroughModel) class B(models.Model): text = models.TextField() class ThroughModel(models.Model): a = models.ForeignKey(A) b = models.ForeignKey(B) extra = models.BooleanField() #this will return a list of ThroughModel objects ThroughModel.objects.filter(b=instance_of_b, extra=True) #this will return a list of A objects based on an extra field on the through table A.objects.filter(things__ThroughModel__extra=True) #keep in mind that limiting by one of the foreign keys on the through model is easier A.objects.filter(things=instance_of_b)