Ensure that an existing document is updated instead of be overwritten.
(self)
| 1372 | assert fresh_boy.name == "Bob" |
| 1373 | |
| 1374 | def test_update(self): |
| 1375 | """Ensure that an existing document is updated instead of be |
| 1376 | overwritten. |
| 1377 | """ |
| 1378 | # Create person object and save it to the database |
| 1379 | person = self.Person(name="Test User", age=30) |
| 1380 | person.save() |
| 1381 | |
| 1382 | # Create same person object, with same id, without age |
| 1383 | same_person = self.Person(name="Test") |
| 1384 | same_person.id = person.id |
| 1385 | same_person.save() |
| 1386 | |
| 1387 | # Confirm only one object |
| 1388 | assert self.Person.objects.count() == 1 |
| 1389 | |
| 1390 | # reload |
| 1391 | person.reload() |
| 1392 | same_person.reload() |
| 1393 | |
| 1394 | # Confirm the same |
| 1395 | assert person == same_person |
| 1396 | assert person.name == same_person.name |
| 1397 | assert person.age == same_person.age |
| 1398 | |
| 1399 | # Confirm the saved values |
| 1400 | assert person.name == "Test" |
| 1401 | assert person.age == 30 |
| 1402 | |
| 1403 | # Test only / exclude only updates included fields |
| 1404 | person = self.Person.objects.only("name").get() |
| 1405 | person.name = "User" |
| 1406 | person.save() |
| 1407 | |
| 1408 | person.reload() |
| 1409 | assert person.name == "User" |
| 1410 | assert person.age == 30 |
| 1411 | |
| 1412 | # test exclude only updates set fields |
| 1413 | person = self.Person.objects.exclude("name").get() |
| 1414 | person.age = 21 |
| 1415 | person.save() |
| 1416 | |
| 1417 | person.reload() |
| 1418 | assert person.name == "User" |
| 1419 | assert person.age == 21 |
| 1420 | |
| 1421 | # Test only / exclude can set non excluded / included fields |
| 1422 | person = self.Person.objects.only("name").get() |
| 1423 | person.name = "Test" |
| 1424 | person.age = 30 |
| 1425 | person.save() |
| 1426 | |
| 1427 | person.reload() |
| 1428 | assert person.name == "Test" |
| 1429 | assert person.age == 30 |
| 1430 | |
| 1431 | # test exclude only updates set fields |