Add endpoints to PUT/PATCH a model
All threads resolved!
All threads resolved!
Closes #1637 (closed)
Merge request reports
Activity
Filter activity
changed milestone to %Arkindex 1.5.3
requested review from @erouchet
assigned to @vrigal
mentioned in merge request frontend!1588 (merged)
added 2 commits
- Resolved by Valentin Rigal
There is a unique constraint on
Model.name
and the serializer is not properly checking it. When I update the name of a model to the name of another existing model, I get an HTTP 500:Traceback (most recent call last): File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/backends/utils.py", line 89, in _execute return self.cursor.execute(sql, params) psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "unique_model_names" DETAIL: Key (name)=(aaaaa) already exists. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/core/handlers/exception.py", line 56, in inner response = get_response(request) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 55, in wrapped_view return view_func(*args, **kwargs) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/views/generic/base.py", line 103, in view return self.dispatch(request, *args, **kwargs) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/rest_framework/views.py", line 509, in dispatch response = self.handle_exception(exc) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/rest_framework/views.py", line 469, in handle_exception self.raise_uncaught_exception(exc) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception raise exc File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch response = handler(request, *args, **kwargs) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/drf_spectacular/utils.py", line 448, in wrapped_method return method(self, request, *args, **kwargs) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/rest_framework/generics.py", line 255, in put return self.update(request, *args, **kwargs) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/rest_framework/mixins.py", line 68, in update self.perform_update(serializer) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/rest_framework/mixins.py", line 78, in perform_update serializer.save() File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/rest_framework/serializers.py", line 200, in save self.instance = self.update(self.instance, validated_data) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/rest_framework/serializers.py", line 983, in update instance.save() File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/models/base.py", line 812, in save self.save_base( File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/models/base.py", line 863, in save_base updated = self._save_table( File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/models/base.py", line 976, in _save_table updated = self._do_update( File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/models/base.py", line 1040, in _do_update return filtered._update(values) > 0 File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/models/query.py", line 1216, in _update return query.get_compiler(self.db).execute_sql(CURSOR) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1822, in execute_sql cursor = super().execute_sql(result_type) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1398, in execute_sql cursor.execute(sql, params) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/debug_toolbar/panels/sql/tracking.py", line 252, in execute return self._record(super().execute, sql, params) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/debug_toolbar/panels/sql/tracking.py", line 177, in _record return method(sql, params) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/backends/utils.py", line 102, in execute return super().execute(sql, params) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/backends/utils.py", line 67, in execute return self._execute_with_wrappers( File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers return executor(sql, params, many, context) File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/backends/utils.py", line 84, in _execute with self.db.wrap_database_errors: File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/utils.py", line 91, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/home/lucidiot/.virtualenvs/backend/lib/python3.10/site-packages/django/db/backends/utils.py", line 89, in _execute return self.cursor.execute(sql, params) django.db.utils.IntegrityError: duplicate key value violates unique constraint "unique_model_names" DETAIL: Key (name)=(aaaaa) already exists.
added 2 commits
- Resolved by Erwan Rouchet
Please register or sign in to reply