()
| 39 | |
| 40 | @create_drop_database(base_config=ormar_base_config) |
| 41 | async def run_query(): |
| 42 | # 1. like in example above |
| 43 | await ( |
| 44 | Car.objects.select_related("manufacturer") |
| 45 | .fields(["id", "name", "manufacturer__name"]) |
| 46 | .all() |
| 47 | ) |
| 48 | |
| 49 | # 2. to mark a field as required use ellipsis |
| 50 | await ( |
| 51 | Car.objects.select_related("manufacturer") |
| 52 | .fields({"id": ..., "name": ..., "manufacturer": {"name": ...}}) |
| 53 | .all() |
| 54 | ) |
| 55 | |
| 56 | # 3. to include whole nested model use ellipsis |
| 57 | await ( |
| 58 | Car.objects.select_related("manufacturer") |
| 59 | .fields({"id": ..., "name": ..., "manufacturer": ...}) |
| 60 | .all() |
| 61 | ) |
| 62 | |
| 63 | # 4. to specify fields at last nesting level you can also use set |
| 64 | # - equivalent to 2. above |
| 65 | await ( |
| 66 | Car.objects.select_related("manufacturer") |
| 67 | .fields({"id": ..., "name": ..., "manufacturer": {"name"}}) |
| 68 | .all() |
| 69 | ) |
| 70 | |
| 71 | # 5. of course set can have multiple fields |
| 72 | await ( |
| 73 | Car.objects.select_related("manufacturer") |
| 74 | .fields({"id": ..., "name": ..., "manufacturer": {"name", "founded"}}) |
| 75 | .all() |
| 76 | ) |
| 77 | |
| 78 | # 6. you can include all nested fields, |
| 79 | # but it will be equivalent of 3. above which is shorter |
| 80 | await ( |
| 81 | Car.objects.select_related("manufacturer") |
| 82 | .fields({"id": ..., "name": ..., "manufacturer": {"id", "name", "founded"}}) |
| 83 | .all() |
| 84 | ) |
| 85 | |
| 86 | |
| 87 | asyncio.run(run_query()) |
no test coverage detected