GraphQL alias filter affects all properties of the same type #10544

Closed
opened 2025-12-29 21:32:57 +01:00 by adam · 4 comments
Owner

Originally created by @TribuneX on GitHub (Dec 4, 2024).

Deployment Type

Self-hosted

Triage priority

N/A

NetBox Version

v4.1.7

Python Version

3.12

Steps to Reproduce

It seems, that I cannot use a single alias filter within a query, since it will also have an undesired effect on subsequent properties of the same type. The same applies if I use multiple aliases in the same query. The first one always wins.

See the following demo query done on the NetBox demo instance:

query aliasOnInterface {
  device(id: 1) {
    name
    lags: interfaces(filters: { type: { exact: "lag" } }) {
      name
    }
    interfaces {
      name
    }
  }
}

Expected Behavior

{
  "data": {
    "device": {
      "name": "dmi01-akron-rtr01",
      "lags": [
        {
          "name": "Po1"
        }
      ],
      "interfaces": [
        {
          "name": "GigabitEthernet0/0/0"
        },
        {
          "name": "GigabitEthernet0/0/1"
        },
        {
          "name": "GigabitEthernet0/1/0"
        },
        {
          "name": "GigabitEthernet0/1/1"
        },
        {
          "name": "GigabitEthernet0/1/2"
        },
        {
          "name": "GigabitEthernet0/1/3"
        },
        {
          "name": "GigabitEthernet0/1/4"
        },
        {
          "name": "GigabitEthernet0/1/5"
        },
        {
          "name": "GigabitEthernet0/1/6"
        },
        {
          "name": "GigabitEthernet0/1/7"
        },
        {
          "name": "GigabitEthernet0/1/8"
        },
        {
          "name": "Wlan-GigabitEthernet0/1/8"
        },
        {
          "name": "Cellular0/2/0"
        },
        {
          "name": "Po1"
        }
      ]
    }
  }
}

Observed Behavior

{
  "data": {
    "device": {
      "name": "dmi01-akron-rtr01",
      "lags": [
        {
          "name": "Po1"
        }
      ],
      "interfaces": [
        {
          "name": "Po1"
        }
      ]
    }
  }
}
Originally created by @TribuneX on GitHub (Dec 4, 2024). ### Deployment Type Self-hosted ### Triage priority N/A ### NetBox Version v4.1.7 ### Python Version 3.12 ### Steps to Reproduce It seems, that I cannot use a single alias filter within a query, since it will also have an undesired effect on subsequent properties of the same type. The same applies if I use multiple aliases in the same query. The first one always wins. See the following demo query done on the [NetBox demo instance](https://demo.netbox.dev/dcim/devices/1): ```graphql query aliasOnInterface { device(id: 1) { name lags: interfaces(filters: { type: { exact: "lag" } }) { name } interfaces { name } } } ``` ### Expected Behavior ```json { "data": { "device": { "name": "dmi01-akron-rtr01", "lags": [ { "name": "Po1" } ], "interfaces": [ { "name": "GigabitEthernet0/0/0" }, { "name": "GigabitEthernet0/0/1" }, { "name": "GigabitEthernet0/1/0" }, { "name": "GigabitEthernet0/1/1" }, { "name": "GigabitEthernet0/1/2" }, { "name": "GigabitEthernet0/1/3" }, { "name": "GigabitEthernet0/1/4" }, { "name": "GigabitEthernet0/1/5" }, { "name": "GigabitEthernet0/1/6" }, { "name": "GigabitEthernet0/1/7" }, { "name": "GigabitEthernet0/1/8" }, { "name": "Wlan-GigabitEthernet0/1/8" }, { "name": "Cellular0/2/0" }, { "name": "Po1" } ] } } } ``` ### Observed Behavior ```json { "data": { "device": { "name": "dmi01-akron-rtr01", "lags": [ { "name": "Po1" } ], "interfaces": [ { "name": "Po1" } ] } } } ```
adam added the type: bugtopic: GraphQLseverity: low labels 2025-12-29 21:32:57 +01:00
adam closed this issue 2025-12-29 21:32:57 +01:00
Author
Owner

@jeremypng commented on GitHub (Jan 23, 2025):

This is a bug in the Strawberry Django Query Optimizer. Disabling prefetch related makes this behave properly. We'll need to open an issue over there.

EDIT: This is open as an issue strawberry-graphql/strawberry-django#695

@jeremypng commented on GitHub (Jan 23, 2025): This is a bug in the Strawberry Django Query Optimizer. Disabling prefetch related makes this behave properly. We'll need to open an issue over there. EDIT: This is open as an issue strawberry-graphql/strawberry-django#695
Author
Owner

@jeremypng commented on GitHub (Feb 4, 2025):

This is fixed in Strawberry Django 0.55.1

https://github.com/strawberry-graphql/strawberry-django/pull/698

If we can update to the newer package I think this one should resolve.

@jeremypng commented on GitHub (Feb 4, 2025): This is fixed in Strawberry Django 0.55.1 https://github.com/strawberry-graphql/strawberry-django/pull/698 If we can update to the newer package I think this one should resolve.
Author
Owner

@jeremystretch commented on GitHub (Feb 12, 2025):

Appreciate the heads up. Unfortunately, we're still pinned to strawberry-graphql-django==0.52.0 due to the bug captured under #18329. It seems this remains a problem in the latest release of strawberry-graphql-django.

@jeremystretch commented on GitHub (Feb 12, 2025): Appreciate the heads up. Unfortunately, we're still pinned to `strawberry-graphql-django==0.52.0` due to the bug captured under #18329. It seems this remains a problem in the latest release of `strawberry-graphql-django`.
Author
Owner

@arthanson commented on GitHub (Apr 22, 2025):

This is fixed in the latest NetBox release (v4.2.8) due to the update in strawberry-graphql

@arthanson commented on GitHub (Apr 22, 2025): This is fixed in the latest NetBox release (v4.2.8) due to the update in strawberry-graphql
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#10544