mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Sorting by Tags column causes some items to disappear and some to duplicate #6226
Closed
opened 2025-12-29 19:38:16 +01:00 by adam
·
9 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#6226
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @markkuleinio on GitHub (Mar 18, 2022).
Originally assigned to: @jeremystretch on GitHub.
NetBox version
v3.1.9
Python version
3.8
Steps to Reproduce
Expected Behavior
All four prefixes are shown and they are sorted by the tags.
Observed Behavior
Only 10.99.0.0/24 and 10.99.1.0/24 are shown, and they are both shown twice. 10.99.2.0/24 and 10.99.3.0/24 are not shown.
All four prefixes are shown again if the view is sorted by some other column than tags.
Sorting by tags seems to work when only one tag is assigned to the objects.
This same problem is also with at least devices so it is not related to prefixes view only.
@jeremystretch commented on GitHub (Mar 18, 2022):
I don't think it should be possible to sort objects by tags. How would that even work? We could sort by the number of assigned tags I suppose, though that seems unlikely to be useful.
@markkuleinio commented on GitHub (Mar 18, 2022):
It works by getting the list of objects grouped by their tags (just like when sorting by tenant for example). For example, if I have tags "Batch 1" and "Batch 2" (as well as untagged items), I get the output sorted by the batches, and I get immediate overview of the proceeding of the projects.
I would expect the sorting to work alphabetically by tag names (natural sorting for tags containing numbers would be great but maybe hard).
When there are multiple tags for an object, I would prefer to have the tags shown as sorted, now they are shown in random order (maybe by the order they were added to the object), but that is a different issue I guess.
@jeremystretch commented on GitHub (Mar 18, 2022):
I mean, what would be the practical use of sorting objects by the tags they have applied? There's no implicit relation between any two given tags, so it doesn't seem like it have any real value except in very niche scenarios.
@markkuleinio commented on GitHub (Mar 18, 2022):
I may have worded my use case badly (sorry, English is not my first language), I'll try again:
I have devices with tags "Batch 1" and "Batch 2" and so on (as well as untagged devices, and a few devices have other tags as well), so when I click the Tags column I get the device list sorted by the batches, and I get immediate overview of the proceeding of the project (by seeing the device statuses, and which devices still have specific tags assigned).
This has been extremely useful ever since the Tags column was made possible.
Edit: to be clear, this is the problem why I opened the issue: It is only now I realized that the output is mangled when sorted by tags (some prefixes/devices are totally missing, and some are listed twice). I suspect this problem started with NetBox 3.x because this system was upgraded from 2.11.x to 3.1.x only in January.
@DanSheps commented on GitHub (Mar 18, 2022):
I think the problem you will run up against here is, lets say you have your batch tags, and you want to sort by the tags. How do you determine which tag to sort by?
A practical example:
Tags:
Batch 1
Batch 2
Alpha
Beta
Device:
Device 1 (Batch 2,Alpha)
Device 2 (Batch 1, Beta)
...
Device X
If we go strictly by the alphanum of any tag, then it is going to sort Alpha before your Batch 1.
I just tried sorting with 'tags__name' using the Django Python API, and the sort doesn't actually work properly (likely sorts on the lowest keyed name only or something) so I doubt this can be accomplished without the addition of another dependency (m2msorted), however for such a niche thing, I don't think adding a dependency would be recommended. I think sorting by count would be the best way honestly.
@markkuleinio commented on GitHub (Mar 18, 2022):
I have assumed that each column would be sorted according to the visible contents of the column. For example, a device with tags "Alpha" and "Batch 2" would be sorted before device with tag "Batch 1".
@jeremystretch commented on GitHub (Mar 22, 2022):
Right, which largely defeats the purpose. Why would I sort e.g. devices with the tag
added-to-nmsbeforerma-opened, for example? Not only does it impose a significant performance penalty, it doesn't seem useful practically.@markkuleinio commented on GitHub (Mar 23, 2022):
There are also current use cases where column sorting is used for getting the output nicely grouped by the column content, in this case by the assigned tags.
I understand from the previous comments that there are performance or magnitude of work implications that prevent implementing multiple-tag sorting ideally and completely. Would it be feasible to automatically disable (in those cases where incorrect results occur = when multiple tags are present) the column sorting possibility, to prevent users getting false data as sorting result? With single tags only it works and is valuable for our workflows, so I wouldn't favour totally disabling Tags column sorting due to this issue.
@jeremystretch commented on GitHub (Mar 24, 2022):
Well, I see two issues here:
The first item can be addressed by simply disabling ordering for tag columns, for now. That will at least resolve the harmful behavior ASAP.
Let's handle the second point separately in a feature request, as there's no immediate need to implement the functionality. You (or anyone else) are welcome to submit a separate FR to implement reliable ordering by assigned tags, but it will need to include a workable proposed implementation.