makeplane/plane · error · APIException
Please check the view
Error message
Please check the view
What it means
Same blanket-catch pattern as the api/ base view, in apps/api/plane/app/views/base.py. get_queryset wraps self.model.objects.all() in try/except; any exception is logged (or just printed when DEBUG) and re-raised as a generic APIException -> HTTP 400 'Please check the view'. In DEBUG=False the real traceback is not even printed — only 'Server Error'.
Source
Thrown at apps/api/plane/app/views/base.py:68
permission_classes = [IsAuthenticated]
filter_backends = (DjangoFilterBackend, SearchFilter)
authentication_classes = [BaseSessionAuthentication]
filterset_fields = []
search_fields = []
use_read_replica = False
def get_queryset(self):
try:
return self.model.objects.all()
except Exception as e:
log_exception(e)
raise APIException("Please check the view", status.HTTP_400_BAD_REQUEST)
def handle_exception(self, exc):
"""
Handle any exception that occurs, by returning an appropriate response,
or re-raising the error.
"""
try:
response = super().handle_exception(exc)
return response
except Exception as e:
(print(e, traceback.format_exc()) if settings.DEBUG else print("Server Error"))
if isinstance(e, IntegrityError):
return Response(
{"error": "The payload is not valid"},
status=status.HTTP_400_BAD_REQUEST,
)
if isinstance(e, ValidationError):View on GitHub (pinned to 1c8a60f858)
Solutions
- Check logs (log_exception captures the real cause); in DEBUG also see the printed traceback.
- Set model on the subclass and run migrations.
- Validate use_read_replica and DB connectivity.
- Treat the blanket 400 as a symptom of a server-side fault, not a client input problem.
Example fix
# before
class AppThingView(BaseAPIView):
pass # model missing
# after
class AppThingView(BaseAPIView):
model = AppThing
... Defensive patterns
Strategy: try-catch
Validate before calling
class AppThingView(BaseAPIView):
model = AppThing
filterset_fields = []
search_fields = []
assert model is not None Try / catch
try:
resp = view.get_queryset()
except APIException as e:
if str(e.detail) == 'Please check the view':
inspect_server_logs() # original exception is swallowed
raise Prevention
- Set model on every BaseAPIView subclass
- Check logs/log_exception for the real cause
- Verify DB and replica health
- Don't treat this 400 as a client input error
When it happens
Trigger: Subclass with missing/invalid self.model; DB error during queryset construction; read-replica routing failure; a custom model manager throwing.
Common situations: Misconfigured subclass in the 'app' app; DB outage affecting the replica; table not migrated; manager error.
Related errors
AI-assisted analysis of makeplane/plane@1c8a60f858 (2026-08-12).
Data as JSON: /api/errors/ac245c5bd27d74fb.
Report an issue: GitHub.