| | 192 | |
| | 193 | def test_related_manager_fk_removal(self): |
| | 194 | self.p1.favorite_book = self.b1 |
| | 195 | self.p1.save() |
| | 196 | self.p2.favorite_book = self.b1 |
| | 197 | self.p2.save() |
| | 198 | |
| | 199 | # This should not remove anything because p1 is not considered boring. |
| | 200 | self.b1.favorite_books(manager='boring_people').remove(self.p1) |
| | 201 | self.assertQuerysetEqual( |
| | 202 | self.b1.favorite_books(manager='boring_people').all(), [ |
| | 203 | "Droopy", |
| | 204 | ], |
| | 205 | lambda c: c.first_name |
| | 206 | ) |
| | 207 | self.assertQuerysetEqual( |
| | 208 | self.b1.favorite_books(manager='fun_people').all(), [ |
| | 209 | "Bugs", |
| | 210 | ], |
| | 211 | lambda c: c.first_name |
| | 212 | ) |
| | 213 | |
| | 214 | # This should only remove fun people, not boring peopel. |
| | 215 | self.b1.favorite_books(manager='fun_people').clear() |
| | 216 | self.assertQuerysetEqual( |
| | 217 | self.b1.favorite_books(manager='boring_people').all(), [ |
| | 218 | "Droopy", |
| | 219 | ], |
| | 220 | lambda c: c.first_name |
| | 221 | ) |
| | 222 | self.assertQuerysetEqual( |
| | 223 | self.b1.favorite_books(manager='fun_people').all(), [ |
| | 224 | ], |
| | 225 | lambda c: c.first_name |
| | 226 | ) |
| | 227 | |
| | 228 | # This should succeed because p2 IS considered boring. |
| | 229 | self.b1.favorite_books(manager='boring_people').remove(self.p2) |
| | 230 | self.assertQuerysetEqual( |
| | 231 | self.b1.favorite_books(manager='boring_people').all(), [ |
| | 232 | ], |
| | 233 | lambda c: c.first_name |
| | 234 | ) |
| | 235 | self.assertQuerysetEqual( |
| | 236 | self.b1.favorite_books(manager='fun_people').all(), [ |
| | 237 | ], |
| | 238 | lambda c: c.first_name |
| | 239 | ) |