Skip to content

Instantly share code, notes, and snippets.

@jpadilla
Created September 5, 2014 21:43
Show Gist options
  • Save jpadilla/b493d98e9cd4ecf523bd to your computer and use it in GitHub Desktop.
Save jpadilla/b493d98e9cd4ecf523bd to your computer and use it in GitHub Desktop.
class Course(models.Model):
name = models.CharField(max_length=255)
class Teacher(models.Model):
name = models.CharField(max_length=255)
courses = models.ManyToManyField(Course)
class M2MDjangoFilterBackendTests(TestCase):
def test_duplicate_results(self):
class CourseSerializer(serializers.ModelSerializer):
teacher_set = serializers.PrimaryKeyRelatedField(many=True)
class Meta:
model = Course
class TeacherSerializer(serializers.ModelSerializer):
class Meta:
model = Teacher
class TeacherView(generics.ListCreateAPIView):
serializer_class = TeacherSerializer
model = Teacher
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('courses',)
class CourseView(generics.ListCreateAPIView):
serializer_class = CourseSerializer
model = Course
view = CourseView.as_view()
request = factory.post('/', {'name': 'Course 1'})
course1_response = view(request)
view = CourseView.as_view()
request = factory.post('/', {'name': 'Course 2'})
course2_response = view(request)
view = TeacherView.as_view()
request = factory.post('/', {
'name': 'Teacher 1',
'courses': [
course1_response.data['id'],
course2_response.data['id']
]
})
teacher_response = view(request)
view = TeacherView.as_view()
request = factory.get('/', {'courses': 1})
teachers_response = view(request)
self.assertEqual(teachers_response.data, [teacher_response.data])
self.assertEqual(len(teachers_response.data), 1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment