In the previous part, we looked at product attributes. In this part, we will look at product variants.
Product variants are useful when we have different purchasable versions of the same product.
Think of the example:
- Paperback
- Hardcover
- Signed edition
Attributes vs variants
Attributes describe the product.
Example:
Author: jaimedcsilva
Language: English
Number of pages: 250
Publication date: 2026-05-13
Variants represent different versions that the customer can buy.
Example:
Book
├── Paperback
├── Hardcover
└── Signed edition
Parent and child products
In Django Oscar, a product with variants is usually represented with one parent product and multiple child products.
Parent product:
- Django Oscar Book
Child products:
- Django Oscar Book - Paperback
- Django Oscar Book - Hardcover
- Django Oscar Book - Signed edition
The parent product groups everything together.
The child products are the actual products that can have stock records, prices and availability.
Creating variants
Go to:
Dashboard > Catalogue > Products
Create the main product first:
- Title: Django Oscar Book
- Structure: Parent
Then create the child products:
- Django Oscar Book - Paperback
- Django Oscar Book - Hardcover
- Django Oscar Book - Signed edition
Each child product can have its own:
- UPC
- Stock record
- Price
- Availability
Book example
Django Oscar Book
Paperback
- Price: 19.99€
- Stock: 20
Hardcover
- Price: 29.99€
- Stock: 10
Signed edition
- Price: 49.99€
- Stock: 5
Each version can have a different price and stock quantity.
When to use variants
Use variants when the customer must choose one specific version of the product.
- Paperback or Hardcover
- Standard or Signed edition
- Portuguese edition or English edition
Use attributes when you only want to describe the product.
- Author
- Number of pages
- Publication date
- Publisher
Simple rule
If it changes what the customer buys, use a variant.
If it only describes the product, use an attribute.