(self)
| 696 | Group.drop_collection() |
| 697 | |
| 698 | def test_map_field_reference(self): |
| 699 | class User(Document): |
| 700 | name = StringField() |
| 701 | |
| 702 | class Group(Document): |
| 703 | members = MapField(ReferenceField(User)) |
| 704 | |
| 705 | User.drop_collection() |
| 706 | Group.drop_collection() |
| 707 | |
| 708 | members = [] |
| 709 | for i in range(1, 51): |
| 710 | user = User(name="user %s" % i) |
| 711 | user.save() |
| 712 | members.append(user) |
| 713 | |
| 714 | group = Group(members={str(u.id): u for u in members}) |
| 715 | group.save() |
| 716 | |
| 717 | group = Group(members={str(u.id): u for u in members}) |
| 718 | group.save() |
| 719 | |
| 720 | with query_counter() as q: |
| 721 | assert q == 0 |
| 722 | |
| 723 | group_obj = Group.objects.first() |
| 724 | assert q == 1 |
| 725 | |
| 726 | _ = [m for m in group_obj.members] |
| 727 | assert q == 2 |
| 728 | |
| 729 | for _, m in group_obj.members.items(): |
| 730 | assert isinstance(m, User) |
| 731 | |
| 732 | # Document select_related |
| 733 | with query_counter() as q: |
| 734 | assert q == 0 |
| 735 | |
| 736 | group_obj = Group.objects.first().select_related() |
| 737 | assert q == 2 |
| 738 | |
| 739 | _ = [m for m in group_obj.members] |
| 740 | assert q == 2 |
| 741 | |
| 742 | for k, m in group_obj.members.items(): |
| 743 | assert isinstance(m, User) |
| 744 | |
| 745 | # Queryset select_related |
| 746 | with query_counter() as q: |
| 747 | assert q == 0 |
| 748 | |
| 749 | group_objs = Group.objects.select_related() |
| 750 | assert q == 2 |
| 751 | |
| 752 | for group_obj in group_objs: |
| 753 | _ = [m for m in group_obj.members] |
| 754 | assert q == 2 |
| 755 |
nothing calls this directly
no test coverage detected