django queryset para campo de muchos a muchos

Tengo los siguientes modelos de 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)

¿Cómo puedo realizar una consulta que me dará todos los objetos de artículo que están asociados con cualquiera de las mismas categorías con las que se relaciona un objeto de preferencia?

p.ej. Si tengo un objeto de preferencia relacionado con las categorías "pez", "gato" y "perro", quiero una lista de todos los artículos que están asociados con cualquiera de "pez", "gato" o "perro".

Respuestas a la pregunta(2)

Su respuesta a la pregunta