Quick Search
The main search bar allows you to search across multiple fields:- Item names: Auto-generated names like “Real Madrid Home 2023-24”
- Club names: Search by team name
- Player names: Find jerseys by player
- Descriptions: Search custom descriptions and notes
- Tags: Find items by custom tags
Filter Options
Combine search queries with filters for precise results:Item Type Filter
Filter by specific item types:- Jerseys
- Shorts
- Outerwear
- Tracksuits
- Pants
- Other items
Club Filter
Filter by club to see all items from a specific team:By Club
View all items from a specific club organized by season
By Season
See all items from a particular season across clubs
By Brand
Filter by manufacturer (Nike, Adidas, Puma, etc.)
By Condition
Find items in specific condition ranges
Season Filter
Organize items chronologically:Brand Filter
Filter by manufacturer:Condition Filter
Filter by condition rating or detailed condition:Visibility Filters
Control which items appear in searches:Public items are visible to all users. Private items only appear in your own collection. Draft items don’t appear anywhere until published.
Advanced Search
TheItemService provides advanced search with multiple filter combinations:
Filter Dictionary
Pass multiple filters as a dictionary:- Public, published items (not drafts)
- Made by Nike
- From Barcelona
- In mint condition (10/10)
- Containing “Messi” in searchable fields
Database Indexes
FootyCollect uses strategic database indexes for fast search performance:Composite indexes optimize common query patterns like “find all jerseys for this user” or “find all items from this club in this season”.
Custom Managers
FootyCollect uses custom Django managers for common queries:BaseItemManager
For theBaseItem model:
MTIManager
For specific item types (Jersey, Shorts, etc.):Why separate managers for MTI?
Why separate managers for MTI?
Multi-Table Inheritance requires traversing the relationship to This provides a consistent API across
BaseItem for visibility filters. The MTIManager handles this automatically:BaseItem and specific item types.Tag-Based Search
FootyCollect supports custom tags for flexible categorization:Popular Tag Use Cases
- match-worn: Items worn in actual matches
- signed: Autographed items
- rare: Limited edition or hard-to-find items
- vintage: Retro or historical items
- grail: Dream items or most prized pieces
- for-sale: Items available for trade/sale
Sort Options
Sort search results by various criteria:Date Added (Default)
By Club Name
By Season
By Condition
By Brand
Collection Analytics
Get insights about search results:Performance Optimization
Query Optimization
FootyCollect usesselect_related and prefetch_related to minimize database queries:
Pagination
Large result sets are paginated for performance:Best Practices
- Use specific filters: Combine multiple filters to narrow results quickly
- Start broad, then narrow: Begin with a general search, then add filters
- Use tags strategically: Create a consistent tagging system for your collection
- Leverage visibility filters: Keep drafts separate from published items
- Sort by relevant criteria: Choose sort order based on what you’re looking for
- Search within results: Use filters to refine large search results