Good catch.  Would it make sense to instead use a Q object like this?
    result[result_key] = list(self.registrations.filter(Q(studentregistration__relationship=rmap[key]) & nest_Q(StudentRegistration.is_valid_qobject(), 'studentregistration')).distinct())