exclude through models
This commit is contained in:
@ -230,3 +230,58 @@ async def test_selecting_subset():
|
||||
await Car.objects.select_related("manufacturer").fields(
|
||||
["id", "name", "manufacturer__founded"]
|
||||
).all()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_selecting_subset_of_through_model():
|
||||
async with database:
|
||||
car = (
|
||||
await Car.objects.select_related(["manufacturer__hq__nicks"])
|
||||
.fields(
|
||||
{
|
||||
"id": ...,
|
||||
"name": ...,
|
||||
"manufacturer": {
|
||||
"name": ...,
|
||||
"hq": {"name": ..., "nicks": {"name": ...}},
|
||||
},
|
||||
}
|
||||
)
|
||||
.exclude_fields("manufacturer__hq__nickshq")
|
||||
.get()
|
||||
)
|
||||
assert car.manufacturer.hq.nicks[0].nickshq is None
|
||||
|
||||
car = (
|
||||
await Car.objects.select_related(["manufacturer__hq__nicks"])
|
||||
.fields(
|
||||
{
|
||||
"id": ...,
|
||||
"name": ...,
|
||||
"manufacturer": {
|
||||
"name": ...,
|
||||
"hq": {"name": ..., "nicks": {"name": ...}},
|
||||
},
|
||||
}
|
||||
)
|
||||
.exclude_fields({"manufacturer": {"hq": {"nickshq": ...}}})
|
||||
.get()
|
||||
)
|
||||
assert car.manufacturer.hq.nicks[0].nickshq is None
|
||||
|
||||
car = (
|
||||
await Car.objects.select_related(["manufacturer__hq__nicks"])
|
||||
.fields(
|
||||
{
|
||||
"id": ...,
|
||||
"name": ...,
|
||||
"manufacturer": {
|
||||
"name": ...,
|
||||
"hq": {"name": ..., "nicks": {"name": ...}},
|
||||
},
|
||||
}
|
||||
)
|
||||
.exclude_fields("manufacturer__hq__nickshq__nick")
|
||||
.get()
|
||||
)
|
||||
assert car.manufacturer.hq.nicks[0].nickshq is not None
|
||||
|
||||
@ -261,7 +261,8 @@ async def test_nested_m2m_values_subset_of_fields():
|
||||
user = (
|
||||
await Role.objects.select_related("users__categories")
|
||||
.filter(name="admin")
|
||||
.fields({"name": ..., "users": {"name": ...}})
|
||||
.fields({"name": ..., "users": {"name": ..., "categories": {"name"}}})
|
||||
.exclude_fields("users__roleuser")
|
||||
.values()
|
||||
)
|
||||
assert user == [
|
||||
|
||||
Reference in New Issue
Block a user