@@ -14,45 +14,40 @@ class Meta:
1414
1515
1616class UserUpdate (generics .UpdateAPIView ):
17- queryset = User .objects .exclude (username = 'exclude' ). prefetch_related ( 'groups' )
17+ queryset = User .objects .exclude (username = 'exclude' )
1818 serializer_class = UserSerializer
19+ prefetch_related = ['groups' ]
1920
2021
2122class TestPrefetchRelatedUpdates (TestCase ):
2223 def setUp (self ):
2324 self .
user = User .
objects .
create (
username = 'tom' ,
email = '[email protected] ' )
2425 self .groups = [Group .objects .create (name = 'a' ), Group .objects .create (name = 'b' )]
2526 self .user .groups .set (self .groups )
26-
27- def test_prefetch_related_updates (self ):
28- view = UserUpdate .as_view ()
29- pk = self .user .pk
30- groups_pk = self .groups [0 ].pk
31- request = factory .put ('/' , {'username' : 'new' , 'groups' : [groups_pk ]}, format = 'json' )
32- response = view (request , pk = pk )
33- assert User .objects .get (pk = pk ).groups .count () == 1
34- expected = {
35- 'id' : pk ,
27+ self .expected = {
28+ 'id' : self .user .pk ,
3629 'username' : 'new' ,
3730 'groups' : [1 ],
38- 31+ 3932 }
40- assert response .data == expected
33+ self .view = UserUpdate .as_view ()
34+
35+ def test_prefetch_related_updates (self ):
36+ request = factory .put (
37+ '/' , {'username' : 'new' , 'groups' : [self .groups [0 ].pk ]}, format = 'json'
38+ )
39+ response = self .view (request , pk = self .user .pk )
40+ assert User .objects .get (pk = self .user .pk ).groups .count () == 1
41+ assert response .data == self .expected
4142
4243 def test_prefetch_related_excluding_instance_from_original_queryset (self ):
4344 """
4445 Regression test for https://github.com/encode/django-rest-framework/issues/4661
4546 """
46- view = UserUpdate .as_view ()
47- pk = self .user .pk
48- groups_pk = self .groups [0 ].pk
49- request = factory .put ('/' , {'username' : 'exclude' , 'groups' : [groups_pk ]}, format = 'json' )
50- response = view (request , pk = pk )
51- assert User .objects .get (pk = pk ).groups .count () == 1
52- expected = {
53- 'id' : pk ,
54- 'username' : 'exclude' ,
55- 'groups' : [1 ],
56- 57- }
58- assert response .data == expected
47+ request = factory .put (
48+ '/' , {'username' : 'exclude' , 'groups' : [self .groups [0 ].pk ]}, format = 'json'
49+ )
50+ response = self .view (request , pk = self .user .pk )
51+ assert User .objects .get (pk = self .user .pk ).groups .count () == 1
52+ self .expected ['username' ] = 'exclude'
53+ assert response .data == self .expected
0 commit comments