Order¶
Order
¶
djadmin.dataclasses.Order
Ordering configuration for a Column.
This dataclass specifies how a column should be orderable, including custom labels and which fields to use for ordering.
The Order instance is truthy when enabled=True and falsy when enabled=False,
allowing for simple boolean checks: if column.order: ...
Class Attributes
| Attribute | Type | Description |
|---|---|---|
enabled |
- | Whether ordering is enabled for this column. |
fields |
- | Optional list of field names to use for ordering. If None, uses the column's field. |
label |
- | Optional custom label for ascending order. |
descending_label |
- | Optional custom label for descending order. |
Examples
Enable ordering (default behavior)¶
Column('name', order=Order())
Disable ordering¶
Column('description', order=Order(enabled=False))
Custom labels for ascending/descending¶
Column('price', order=Order( label='Price (low to high)', descending_label='Price (high to low)' ))
Order by multiple fields¶
Column('author', order=Order(fields=['author__last_name', 'author__first_name']))
Method Resolution Order
djadmin.dataclasses.Order
Attributes
| Attribute | Value | Defined in |
|---|---|---|
__annotations__ |
{'enabled': 'bool', 'fields': 'list[str] | None', 'label'... |
djadmin.dataclasses.Order
|
__dataclass_fields__ |
{'enabled': Field(name='enabled',type='bool',default=True... |
djadmin.dataclasses.Order
|
__dataclass_params__ |
_DataclassParams(init=True,repr=True,eq=True,order=False,... |
djadmin.dataclasses.Order
|
__hash__ |
None |
djadmin.dataclasses.Order
|
__match_args__ |
('enabled', 'fields', 'label', 'descending_label') |
djadmin.dataclasses.Order
|
descending_label |
None |
djadmin.dataclasses.Order
|
enabled |
True |
djadmin.dataclasses.Order
|
fields |
None |
djadmin.dataclasses.Order
|
label |
None |
djadmin.dataclasses.Order
|
Methods
__bool__(self)
Defined in:
<class 'djadmin.dataclasses.Order'>
Make Order truthy when enabled, falsy when disabled.
Source code
in dataclasses.py
line 180
def __bool__(self):
"""Make Order truthy when enabled, falsy when disabled."""
return self.enabled
__eq__(self, other)
Defined in:
<class 'djadmin.dataclasses.Order'>
Return self==value.
__init__(self, enabled: 'bool' = True, fields: 'list[str] | None' = None, label: 'str | None' = None, descending_label: 'str | None' = None) -> None
Defined in:
<class 'djadmin.dataclasses.Order'>
Initialize self. See help(type(self)) for accurate signature.
__repr__(self)
Defined in:
<class 'djadmin.dataclasses.Order'>
Return repr(self).
to_ordering_choice(self, field_name: 'str', column_label: 'str')
Defined in:
<class 'djadmin.dataclasses.Order'>
Convert to OrderingFilter choice tuple.
Args: field_name: The field name from the Column. column_label: The display label for the column.
Returns: tuple: A tuple of (ascending_choice, descending_choice) for OrderingFilter, or None if ordering is disabled.
Example: >>> order = Order(label='Name (A-Z)', descending_label='Name (Z-A)') >>> order.to_ordering_choice('name', 'Name') (('name', 'Name (A-Z)'), ('-name', 'Name (Z-A)'))
Source code
in dataclasses.py
line 184
def to_ordering_choice(self, field_name: str, column_label: str):
"""
Convert to OrderingFilter choice tuple.
Args:
field_name: The field name from the Column.
column_label: The display label for the column.
Returns:
tuple: A tuple of (ascending_choice, descending_choice) for OrderingFilter,
or None if ordering is disabled.
Example:
>>> order = Order(label='Name (A-Z)', descending_label='Name (Z-A)')
>>> order.to_ordering_choice('name', 'Name')
(('name', 'Name (A-Z)'), ('-name', 'Name (Z-A)'))
"""
if not self.enabled:
return None
# Use custom fields if specified, otherwise use the column's field
base_field = self.fields[0] if self.fields else field_name
asc_label = self.label or column_label
desc_label = self.descending_label or f'{column_label} (desc)'
return (
(base_field, asc_label),
(f'-{base_field}', desc_label),
)
Fields
| Field | Type | Related To |
|---|---|---|
__dict__ |
getset_descriptor |
- |
__weakref__ |
getset_descriptor |
- |