(self)
| 463 | ) |
| 464 | |
| 465 | def test_generic_reference(self): |
| 466 | class UserA(Document): |
| 467 | name = StringField() |
| 468 | |
| 469 | class UserB(Document): |
| 470 | name = StringField() |
| 471 | |
| 472 | class UserC(Document): |
| 473 | name = StringField() |
| 474 | |
| 475 | class Group(Document): |
| 476 | members = ListField(GenericReferenceField()) |
| 477 | |
| 478 | UserA.drop_collection() |
| 479 | UserB.drop_collection() |
| 480 | UserC.drop_collection() |
| 481 | Group.drop_collection() |
| 482 | |
| 483 | members = [] |
| 484 | for i in range(1, 51): |
| 485 | a = UserA(name="User A %s" % i) |
| 486 | a.save() |
| 487 | |
| 488 | b = UserB(name="User B %s" % i) |
| 489 | b.save() |
| 490 | |
| 491 | c = UserC(name="User C %s" % i) |
| 492 | c.save() |
| 493 | |
| 494 | members += [a, b, c] |
| 495 | |
| 496 | group = Group(members=members) |
| 497 | group.save() |
| 498 | |
| 499 | group = Group(members=members) |
| 500 | group.save() |
| 501 | |
| 502 | with query_counter() as q: |
| 503 | assert q == 0 |
| 504 | |
| 505 | group_obj = Group.objects.first() |
| 506 | assert q == 1 |
| 507 | |
| 508 | _ = [m for m in group_obj.members] |
| 509 | assert q == 4 |
| 510 | |
| 511 | _ = [m for m in group_obj.members] |
| 512 | assert q == 4 |
| 513 | |
| 514 | for m in group_obj.members: |
| 515 | assert "User" in m.__class__.__name__ |
| 516 | |
| 517 | # Document select_related |
| 518 | with query_counter() as q: |
| 519 | assert q == 0 |
| 520 | |
| 521 | group_obj = Group.objects.first().select_related() |
| 522 | assert q == 4 |
nothing calls this directly
no test coverage detected