Django - filtering on foreign key properties

I'm trying to filter a table in Django based on the value of a particular field of a ForeignKey.

For example, I have two models:

class Asset(models.Model):
    name = models.TextField(max_length=150)
    project = models.ForeignKey('Project')

class Project(models.Model):
    name = models.TextField(max_length=150)

I'd like to filter my asset list based on the name of the associated project.

Currently, I am performing two queries:

project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
                                  project__in=project_list).order_by('desc')

I'm wondering if there is a way to specify this kind of filtering in the main query?


Asset.objects.filter( project__name__contains="Foo" )

This has been possible since the queryset-refactor branch landed pre-1.0. Ticket 4088 exposed the problem. This should work:

Asset.objects.filter(
    desc__contains=filter,
    project__name__contains="Foo").order_by("desc")

The Django Many-to-one documentation has this and other examples of following Foreign Keys using the Model API.