I'm new to django and ORM in general, and so have trouble coming up with query which would join multiple tables.

I have 4 Models that need joining - `Category`, `SubCategory`, `Product` and `Packaging`, example values would be:

`Category: 'male'`

`SubCategory: 'shoes'`

`Product: 'nikeXYZ'`

`Packaging: 'size_36: 1'`

Each of the Model have FK to the model above (ie. `SubCategory` has field `category` etc).

My question is - how can I filter `Product` given a `Category` (e.g. male) and only show products which have `Packaging` attribute `available` set to `True`? Obviously I want to minimise the hits on my database (ideally do it with 1 SQL query).

I could do something along these lines:

```
available = Product.objects.filter(packaging__available=True)
subcategories = SubCategory.objects.filter(category_id=<id_of_male>)
products = available.filter(subcategory_id__in=subcategories)

```

but then that requires 2 hits on database at least (`available`, `subcategories`) I think. Is there a way to do it in one go?