Django - filtering on foreign key properties

后端 未结 3 1559
情书的邮戳
情书的邮戳 2020-11-27 12:14

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          


        
相关标签:
3条回答
  • 2020-11-27 12:51

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

    0 讨论(0)
  • 2020-11-27 13:00
    student_user = User.objects.get(id=user_id)
    available_subjects = Subject.objects.exclude(subject_grade__student__user=student_user) # My ans
    enrolled_subjects = SubjectGrade.objects.filter(student__user=student_user)
    context.update({'available_subjects': available_subjects, 'student_user': student_user, 
                    'request':request, 'enrolled_subjects': enrolled_subjects})
    

    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

    0 讨论(0)
  • 2020-11-27 13:09

    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.

    0 讨论(0)
提交回复
热议问题