I'm trying to filter a table in Django based on the value of a particular field of a foreign key.
For example I have two models -
# models.py
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:
# views.py
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?
In my application above, i assume that once a student is enrolled, a subject SubjectGrade instance will be created that contains the subject enrolled and the student himself/herself.
Subject and Student User model is a Foreign Key to the SubjectGrade Model.
In "available_subjects", i excluded all the subjects that are already enrolled by the current student_user by checking all subjectgrade instance that has "student" attribute as the current student_user
PS. Apologies in Advance if you can't still understand because of my explanation. This is the best explanation i Can Provide. Thank you so much
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:The Django Many-to-one documentation has this and other examples of following Foreign Keys using the Model API.