Skip to main content
FootyCollect provides comprehensive search and filtering tools to help you find specific items in your collection, whether you have 10 items or 1,000. The search system supports text queries combined with multiple filters for precise results. 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
Search is case-insensitive and supports partial matches. Searching for “madrid” will find “Real Madrid”, “Atletico Madrid”, etc.

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:
Seasons are stored in “YYYY-YY” format (e.g., “2023-24”) for consistent sorting.

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.
The ItemService provides advanced search with multiple filter combinations:

Filter Dictionary

Pass multiple filters as a dictionary:
This example finds:
  • 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 the BaseItem model:

MTIManager

For specific item types (Jersey, Shorts, etc.):
Multi-Table Inheritance requires traversing the relationship to BaseItem for visibility filters. The MTIManager handles this automatically:
This provides a consistent API across BaseItem and specific item types.
FootyCollect supports custom tags for flexible categorization:
  • 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 uses select_related and prefetch_related to minimize database queries:

Pagination

Large result sets are paginated for performance:
Search results are paginated at 20 items per page by default. This keeps page load times fast even with large collections.

Best Practices

  1. Use specific filters: Combine multiple filters to narrow results quickly
  2. Start broad, then narrow: Begin with a general search, then add filters
  3. Use tags strategically: Create a consistent tagging system for your collection
  4. Leverage visibility filters: Keep drafts separate from published items
  5. Sort by relevant criteria: Choose sort order based on what you’re looking for
  6. Search within results: Use filters to refine large search results