python.django.performance.access-foreign-keys.access-foreign-keys

Author
7,173
Download Count*
License
You should use ITEM.user_id rather than ITEM.user.id to prevent running an extra query.
Run Locally
Run in CI
Defintion
rules:
- id: access-foreign-keys
patterns:
- pattern-either:
- pattern-inside: |
from django.$Y import $Z
...
- pattern-inside: |
import django
...
- pattern: $X.user.id
- pattern-not: request.user.id
message: You should use ITEM.user_id rather than ITEM.user.id to prevent running
an extra query.
languages:
- python
severity: WARNING
metadata:
category: performance
technology:
- django
license: Commons Clause License Condition v1.0[LGPL-2.1-only]
Examples
access-foreign-keys.py
from django.http import HttpResponse
from models import User
def cool_view(request):
# ok: access-foreign-keys
return HttpResponse({'user_id': request.user.id})
def other():
# ruleid: access-foreign-keys
print(User.user.id)
Short Link: https://sg.run/XBoB