django queryset para campo muitos-para-muitos

Eu tenho os seguintes modelos do Django 1.2:

class Category(models.Model):
    name = models.CharField(max_length=255)

class Article(models.Model):
    title = models.CharField(max_length=10, unique=True)
    categories = models.ManyToManyField(Category)

class Preference(models.Model):
    title = models.CharField(max_length=10, unique=True)
    categories = models.ManyToManyField(Category)

Como posso executar uma consulta que fornecerá todos os objetos de artigo associados a qualquer uma das mesmas categorias com as quais um determinado objeto de preferência está relacionado?

por exemplo. Se eu tiver um objeto de preferência relacionado às categorias "peixe", "gatos" e "cães", desejo uma lista de todos os artigos associados a qualquer um dos "peixes", "gatos" ou "cães".

questionAnswers(2)

yourAnswerToTheQuestion