Avoid excess unoptimizable queries within property

Iterating objects manually here avoids an excess query that developers can't optimize out of the method. This is an example that was noted in https://github.com/tangentlabs/django-oscar/issues/1467

- [x] Implement initial prototype
- [ ] Receive feedback
- [ ] Production implementation considering provided feedback
- [ ] Ensure that tests are not broken