Start here. This is the direct spoken answer to practice first.
Overview
Clarifies Django's object-permission hook and enforces ownership or tenancy in the query and policy path.
Django's permission API accepts an object argument, but core Django does not implement object-level permission storage or decisions. A backend or application policy must provide that behavior. I still scope the queryset by owner or tenant before retrieving a private object, then apply any action-specific rule. A model-level change_order permission alone does not mean the user may change every order.