Skip to content

Commit f0c6412

Browse files
authored
Merge pull request #21 from SmartBase-SK/develop
triv: #24416 extended filter documentation
2 parents 35dc28b + 442e885 commit f0c6412

File tree

4 files changed

+67
-1
lines changed

4 files changed

+67
-1
lines changed

docs/table/filters.mdx

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,12 @@ class ProductSBAdmin(SBAdmin):
5959
</Tabs>
6060

6161
# Advanced Filters
62-
To enable advance filters you have to set filter version in your `SBAdminRoleConfiguration`
62+
Advanced Filters allow you to create powerful queries across different fields for more precise data filtering.
63+
64+
![Advanced filters sbadmin](/img/screenshots/advanced_filters2.png)
65+
66+
### Enable Advanced Filters globally
67+
To enable advance filters globally, you have to set filter version in your `SBAdminRoleConfiguration`
6368

6469
<Tabs groupId="2">
6570
<TabItem value="code" label="Code">
@@ -75,3 +80,14 @@ class SBAdminConfiguration(SBAdminConfigurationBase):
7580

7681
</Tabs>
7782

83+
### Enable Advanced Filters only for selected views
84+
You can enable Andvanced Filters for view by setting `filters_version = FilterVersions.FILTERS_VERSION_2` parameter in your SBAdmin view.
85+
86+
```python title="catalog/sb_admin.py"
87+
@admin.register(Purchase, site=sb_admin_site)
88+
class PurchaseSBAdmin(SBAdmin):
89+
model = Purchase
90+
filters_version = FilterVersions.FILTERS_VERSION_2
91+
...
92+
93+
```

docs/tree_widget.mdx

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,53 @@ class ProductCategoryTreeInline(SBAdminFakeInlineMixin, SBAdminTableInline):
123123
```
124124

125125
You can learn more about Fake Inlines in [🔗Fake inlines section](/docs/detail/fake_inlines).
126+
127+
128+
### Tree Filter Widget
129+
The Tree Filter Widget enables users to filter data using hierarchical structures such as categories, departments etc...
130+
131+
![TreeWidget filter sbadmin](/img/screenshots/tree_widget_filter.png)
132+
133+
### 💡 Example: Category Tree Filter for Product SBAdmin View
134+
135+
#### 1. Create widget
136+
Create a filter-specific widget by combining the base tree widget and SBAdminTreeFilterWidget:
137+
138+
```python title="catalog/sb_admin_widgets.py"
139+
class CategoryTreeFilterWidget(CategoryTreeWidget, SBAdminTreeFilterWidget):
140+
template_name = "sb_admin/filter_widgets/tree_select_filter.html"
141+
```
142+
143+
144+
#### 2. Add the Filter to Your Admin
145+
Use the custom widget in a SBAdminField in your admin class to enable tree-based filtering:
146+
147+
```python title="catalog/sb_admin.py"
148+
python title="catalog/sb_admin.py"
149+
@admin.register(Product, site=sb_admin_site)
150+
class ProductSBAdmin(SBAdmin):
151+
model = Product
152+
sbadmin_list_display = (
153+
# ... Other fields
154+
SBAdminField(
155+
name="categories",
156+
title="Categories",
157+
annotate="categories__name",
158+
filter_widget=CategoryTreeFilterWidget(
159+
search_query_lambda=lambda request, qs, model, search_term, language_code: qs.filter(
160+
name__icontains=search_term
161+
),
162+
filter_query_lambda=lambda request, filter_value: Q(
163+
is_active=True
164+
),
165+
),
166+
),
167+
)
168+
```
169+
170+
#### ⚙️ Key Options
171+
- `multiselect`: True for multiple selections, False for single.
172+
- `value_field`: Typically `"path"` for `MP_Node` trees.
173+
- `search_query_lambda`: Optional search support inside the tree.
174+
- `filter_query_lambda`: Filter values in widget.
175+
39.5 KB
Loading
104 KB
Loading

0 commit comments

Comments
 (0)