-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to make the ImageField as required in Swagger POST API #66
Comments
I noticed this too in generated Angular TypeScript. The image variables were always marked with |
I am also facing the same issue even though i specified required=True in serializer class |
I'm using the same serializer setup and mine seems to be working fine. Maybe this is an issue of differences in versions. Here are the versions of Django, Django Extra Fields, Django REST Framework and Django REST Swagger that I have used, so you can compare: |
I wonder if it's because of the |
ReadOnly fields cannot be required at the same time, therefore it's not possible to have a field where both |
What's weird is in my case, I never set |
@baranugur Could you also post your I wonder why your Also, I'm using |
Cross posted to axnsan12/drf-yasg#332 |
Confirmed this is axnsan12/drf-yasg#332 (comment)
|
Marking as completed. |
@yigitguler There may be a way to work around this (at least in documentation): axnsan12/drf-yasg#332 (comment) I don't quite understand what needs to be done, but if this issue were left open it might be useful. We may be able to at least document how to make this work with Do you happen to understand the comment in the link above, and how we could fix it? |
We can reopen the issue. However, I think there is nothing we can do to fix this situation. Developers of drf-yasg assumed that only multipart requests can contain files. Which is not true for our use case. |
Using Custom Schema Generation may be a method to solve this. |
EDITED : Fix the class checking algorithm. My previous answer does not work on FileField or FieldMixin. Hi! This is the work around code that I've overridden FieldInspector to mark Base64ImageField, Base64FileField, Base64FieldMixin as required field
|
@WasinTh Looks pretty neat -- would you mind opening a PR to this repo's README? I think it would be good to document this for others and for others to test out. |
@johnthagen sure this is the pull request on README.md file |
How about make it some example code to testprojet, this repo example does not have about flieupload or imageupload,it would be make good to use |
In Swagger API, I'm using the following setup to show the field as required without any problems:
And to use "string" format instead of an URL, you will need to create the field with use_url=False. |
@alicertel No problem! I got it from the code at |
@WasinTh Would you like to update your PR #100 with the suggested solution #66 (comment) ? |
@alicertel Sure. I've pushed the updated answer on those PRs. |
Thanks @WasinTh |
* Add sample code to handle Base64 fields in drf-extra-fields project * Fix format for .rst * Update Redoc to 2.0.0-rc36 * Update answer to the easier version as suggested in Hipo/drf-extra-fields#66 (comment) * Fix tox environment to properly test on Django 3.0 * Drop all compat support to Django < 2 urls * Fix tox environment * Update manifest * Populate test db * Fix broken URLs in README * Feature/update travis (#17) * Redefine travis steps to include linting * Add stage specific install scripts * Add docs and publish requirements * Update travis.yml requirements * Update travis pip executable * Update flake8 ignore rules and rever pip3 to pip * Separate deploy stage in travis * Add tox dependency to test.txt * Bump drf test targets * Allow test against latest deps to fail * Set build matrix against unittest task only * Remove matrix key from travis.yml * Use aliases to specify matrix style parallelism for unittests only * Write tox-filter.sh * Move linting and formatting conf into their scripts * Run black and autoflake (#18) * Fix documentation build (#12) * Fix malformed RST in README * Fix Sphinx configuration Co-authored-by: JoelLefkowitz <45922542+JoelLefkowitz@users.noreply.github.com> * Move dependencies to setup.py and metadata to setup.cfg (#19) * Remove requirements, update .gitignore and remove flake8-isort (#20) * Remove requirements, update .gitignore and remove flake8-isort from linting spec * Patch test[s] typo * Fix lint build and set as required on Travis (#22) Co-authored-by: johnthagen <johnthagen@gmail.com> * Feature/remove clutter (#21) * Remove requirements, update .gitignore and remove flake8-isort from linting spec * Patch test[s] typo * Patch setup.py test requirements missing comma typo * Replace pyproject.toml * Update pyproject.toml * Update and convert readme and license to md (#25) * Remove compat.py typo (#26) * Update license references to md * Update python2.7 compatability test suite * Pass sphinx build warnings * Add bumbpversion.cfg and refactor dry-yasg2 to drf_yasg2 * Remove tox check * Debump django dependency so that py27 tests can setup * Update travis test-docs script path * Add build shield to readme * Debump pytest dep for python2.7 tests * Debump djangorestframework-camel-case dep for python2.7 tests * Debump django-cors-headers dep for python2.7 tests * Remove swagger-spec-validator dep for python2.7 tests * Update readme links and add python2.7 classifier * Add dj_database_url heroku dependency Co-authored-by: Terry <wasin.th@gmail.com> Co-authored-by: Julia Nething <julia.nething@mobilityhouse.com> Co-authored-by: johnthagen <johnthagen@users.noreply.github.com> Co-authored-by: Fasih Ahmad Fakhri <fasih@email.com> Co-authored-by: johnthagen <johnthagen@gmail.com>
* Add sample code to handle Base64 fields in drf-extra-fields project * Fix format for .rst * Update Redoc to 2.0.0-rc36 * Update answer to the easier version as suggested in Hipo/drf-extra-fields#66 (comment) * Fix tox environment to properly test on Django 3.0 * Drop all compat support to Django < 2 urls * Fix tox environment * Update manifest * Populate test db * Fix broken URLs in README * Feature/update travis (#17) * Redefine travis steps to include linting * Add stage specific install scripts * Add docs and publish requirements * Update travis.yml requirements * Update travis pip executable * Update flake8 ignore rules and rever pip3 to pip * Separate deploy stage in travis * Add tox dependency to test.txt * Bump drf test targets * Allow test against latest deps to fail * Set build matrix against unittest task only * Remove matrix key from travis.yml * Use aliases to specify matrix style parallelism for unittests only * Write tox-filter.sh * Move linting and formatting conf into their scripts * Run black and autoflake (#18) * Fix documentation build (#12) * Fix malformed RST in README * Fix Sphinx configuration Co-authored-by: JoelLefkowitz <45922542+JoelLefkowitz@users.noreply.github.com> * Move dependencies to setup.py and metadata to setup.cfg (#19) * Remove requirements, update .gitignore and remove flake8-isort (#20) * Remove requirements, update .gitignore and remove flake8-isort from linting spec * Patch test[s] typo * Fix lint build and set as required on Travis (#22) Co-authored-by: johnthagen <johnthagen@gmail.com> * Feature/remove clutter (#21) * Remove requirements, update .gitignore and remove flake8-isort from linting spec * Patch test[s] typo * Patch setup.py test requirements missing comma typo * Replace pyproject.toml * Update pyproject.toml * Update and convert readme and license to md (#25) * Remove compat.py typo (#26) * Bug/fix travis errors (#27) * Update license references to md * Update python2.7 compatability test suite * Pass sphinx build warnings * Add bumbpversion.cfg and refactor dry-yasg2 to drf_yasg2 * Remove tox check * Debump django dependency so that py27 tests can setup * Update travis test-docs script path * Add build shield to readme * Debump pytest dep for python2.7 tests * Debump djangorestframework-camel-case dep for python2.7 tests * Debump django-cors-headers dep for python2.7 tests * Remove swagger-spec-validator dep for python2.7 tests Co-authored-by: Terry <wasin.th@gmail.com> Co-authored-by: Julia Nething <julia.nething@mobilityhouse.com> Co-authored-by: johnthagen <johnthagen@users.noreply.github.com> Co-authored-by: Fasih Ahmad Fakhri <fasih@email.com> Co-authored-by: johnthagen <johnthagen@gmail.com>
you should change your parser like this :
after that you can check your swagger : I hope this can help you |
If you want create no class views but use drf:
using manual_parameters you can override form in swagger and add new functions like default etc to image. |
* Add sample code to handle Base64 fields in drf-extra-fields project * Fix format for .rst * Update answer to the easier version as suggested in Hipo/drf-extra-fields#66 (comment) * update readme.rst `permission_classes` expects tuple but list was provided * url from DEFAULT_API_URL now works fix a bug: url from swagger_settings.DEFAULT_API_URL is not working * Check for allow_null attribute * Add utf-8 support for generated formats * Added `many` support to example code. * serialize pytz object as a string * simplify if condition * handle errors rendering with TemplateHTMLRenderer This change fixes an `OPTIONS` request to the API page which will return a successful response, but the `TemplateHTMLRender` will not be prepared to render it since there is no template name provided in either the view or response [1]. [1]: https://github.com/encode/django-rest-framework/blob/f0a5b958a134e8cd94e3ef3263e8fa623ac9b82f/rest_framework/renderers.py#L178-L189 * Allow specifying response as a reference * [readme] Fix missing re_path import * fix map source mapping * Remove universal wheel, python 2 is unsupported * Inline allow_unicode parameter * Update changelog * Update changelog typos * Add cspell * Fix old spelling errors * Add ref_name to UserSerializer after removing suffix typo * Set permission classes to a tuple * Update chagnelog * Add prepublish twine check * Fix action version syntax * Fix indentation in README.rst code blocks * Add twine to publish dependencies * Specify toxenv explicitly * Specify all tox targets * Add py prefix to toxenvs * Update changelog * Update changelog * Declare Django 3.2 support in README, classifiers This commit will make sure that `Django :: 3.2` will show up in the classifiers list on PyPI: https://pypi.org/project/drf-yasg/ (The magic happens because we parse the README to get supported Django): https://github.com/DavidCain/drf-yasg/blob/ee29412d3cdb311/setup.py#L36 3.2 support should already exist ================================ A closed pull request, #735, noted support for Django 3.2 in both `tox.ini`, and the README. That PR was closed in favor of #741, which edited `tox.ini` and switched to GitHub Actions. #735 (comment) This project has been testing on Django 3.2 for a long time (about a year). I think we can declare it supported it the README! * Fix `pip install` command for contributors on zsh On `zsh` (a popular shell, and the default for macOS), install fails: $ pip install -U -e .[validation] zsh: no matches found: .[validation] Quote the arguments so that `bash` or `zsh` will succeed. * Dont use NullBooleanField if drf version >= 3.14.0 * Swap back BooleanField and NullBooleanField * Update changelog * Update README to use path instead of re_path in example * Run tests with latest dependencies - Django 4.0 & 4.1 - DRF 3.13 & 3.14 - Python 3.10 * Add python 3.10 in GH actions matrix * Fix RecursiveField * Change github actions runner from ubuntu-latest to ubuntu-20.04 * Change github actions runner from ubuntu-latest to ubuntu-20.04 * Remove python 3.6 tests since swagger-spec-validator no longer supports it * Use a string literal for python versions such as "3.10" * Add python 3.10 compatibility to README.md * Update changelog * Fix: Provide enums support for schema. * Fix: Tests for Python 3.11. * Refactoring: Removed old version code. * Fix: Linting is now working. * Fix: Provide usage of Enums as dict keys. * Fix: Docs build with latest sphinx versions. * keep path parameters in their given order * Fix: Action build docs with latest tox version. * Fix: Update python version for dj-master branch. Django master branch bumped minimal python version to Python 3.10. In latest version was added check for uniq basename. * Feature: Migrate to PyYAML for yaml generator. (#845) * Feature: Migrate to PyYAML for yaml generator. Closes #833 * Chore: Update swagger ui and redoc dependencies. * Fix: Remove required coreapi dependency. (#854) * Feature: Migrate to PyYAML for yaml generator. Closes #833 * Chore: Update swagger ui and redoc dependencies. * Fix: Remove required coreapi dependency. * Update Changelog * Feature: Add ``drf_yasg.inspectors.query.DrfAPICompatInspector``. (#857) * Feature: Provide to override default renderers via settings. * Feature: Enable tests for django 4.2. * Docs: Add information how to override ``DEFAULT_SPEC_RENDERERS``. * Feature: Add ``drf_yasg.inspectors.query.DrfAPICompatInspector``. This inspector should be main and replace ``CoreAPICompatInspector`` in the future. * [fix] Fixed map source mapping (#859) * Tests: Improve test coverage 95.91% -> 98.30%. (#862) * Update Changelog * Add python3.6 to the actions matrix but exclude it from tests --------- Co-authored-by: Terry <wasin.th@gmail.com> Co-authored-by: Sumit Singh <sumit.singh4613@gmail.com> Co-authored-by: Core-Chan <i@coreja.com> Co-authored-by: Krista Mae Rectra <krista.rectra@gmail.com> Co-authored-by: mmurashov <m.murashov@ritm.media> Co-authored-by: Christoph Beckmann <cbe@colibri-media.de> Co-authored-by: MilanPecov <mpecov@yahoo.ca> Co-authored-by: Terence D. Honles <terence@honles.com> Co-authored-by: Cristi Vîjdea <cristi@cvjd.me> Co-authored-by: Max Vorobev <vmax0770@gmail.com> Co-authored-by: Damien Ramelet <damien.ramelet@protonmail.com> Co-authored-by: Petr Dlouhý <petr.dlouhy@email.cz> Co-authored-by: gopackgo90 <cbodendein@live.com> Co-authored-by: David Cain <davidjosephcain@gmail.com> Co-authored-by: Amir Andohkosh <4315615+amir-bio@users.noreply.github.com> Co-authored-by: Nikolaos Michas <nikos.mixas@outlook.com> Co-authored-by: Ignacio Orlandini <ignacioorlandini@gmail.com> Co-authored-by: Sergey Klyuykov <onegreyonewhite@mail.ru> Co-authored-by: Gagan Deep <the.one.above.all.titan@gmail.com>
* Add sample code to handle Base64 fields in drf-extra-fields project * Fix format for .rst * Update answer to the easier version as suggested in Hipo/drf-extra-fields#66 (comment) * update readme.rst `permission_classes` expects tuple but list was provided * url from DEFAULT_API_URL now works fix a bug: url from swagger_settings.DEFAULT_API_URL is not working * Check for allow_null attribute * Add utf-8 support for generated formats * Added `many` support to example code. * serialize pytz object as a string * simplify if condition * handle errors rendering with TemplateHTMLRenderer This change fixes an `OPTIONS` request to the API page which will return a successful response, but the `TemplateHTMLRender` will not be prepared to render it since there is no template name provided in either the view or response [1]. [1]: https://github.com/encode/django-rest-framework/blob/f0a5b958a134e8cd94e3ef3263e8fa623ac9b82f/rest_framework/renderers.py#L178-L189 * Allow specifying response as a reference * [readme] Fix missing re_path import * fix map source mapping * Remove universal wheel, python 2 is unsupported * Inline allow_unicode parameter * Update changelog * Update changelog typos * Add cspell * Fix old spelling errors * Add ref_name to UserSerializer after removing suffix typo * Set permission classes to a tuple * Update chagnelog * Add prepublish twine check * Fix action version syntax * Fix indentation in README.rst code blocks * Add twine to publish dependencies * Specify toxenv explicitly * Specify all tox targets * Add py prefix to toxenvs * Update changelog * Update changelog * Declare Django 3.2 support in README, classifiers This commit will make sure that `Django :: 3.2` will show up in the classifiers list on PyPI: https://pypi.org/project/drf-yasg/ (The magic happens because we parse the README to get supported Django): https://github.com/DavidCain/drf-yasg/blob/ee29412d3cdb311/setup.py#L36 3.2 support should already exist ================================ A closed pull request, #735, noted support for Django 3.2 in both `tox.ini`, and the README. That PR was closed in favor of #741, which edited `tox.ini` and switched to GitHub Actions. #735 (comment) This project has been testing on Django 3.2 for a long time (about a year). I think we can declare it supported it the README! * Fix `pip install` command for contributors on zsh On `zsh` (a popular shell, and the default for macOS), install fails: $ pip install -U -e .[validation] zsh: no matches found: .[validation] Quote the arguments so that `bash` or `zsh` will succeed. * Dont use NullBooleanField if drf version >= 3.14.0 * Swap back BooleanField and NullBooleanField * Update changelog * Update README to use path instead of re_path in example * Run tests with latest dependencies - Django 4.0 & 4.1 - DRF 3.13 & 3.14 - Python 3.10 * Add python 3.10 in GH actions matrix * Fix RecursiveField * Change github actions runner from ubuntu-latest to ubuntu-20.04 * Change github actions runner from ubuntu-latest to ubuntu-20.04 * Remove python 3.6 tests since swagger-spec-validator no longer supports it * Use a string literal for python versions such as "3.10" * Add python 3.10 compatibility to README.md * Update changelog * Fix: Provide enums support for schema. * Fix: Tests for Python 3.11. * Refactoring: Removed old version code. * Fix: Linting is now working. * Fix: Provide usage of Enums as dict keys. * Fix: Docs build with latest sphinx versions. * keep path parameters in their given order * Fix: Action build docs with latest tox version. * Fix: Update python version for dj-master branch. Django master branch bumped minimal python version to Python 3.10. In latest version was added check for uniq basename. * Feature: Migrate to PyYAML for yaml generator. (#845) * Feature: Migrate to PyYAML for yaml generator. Closes #833 * Chore: Update swagger ui and redoc dependencies. * Fix: Remove required coreapi dependency. (#854) * Feature: Migrate to PyYAML for yaml generator. Closes #833 * Chore: Update swagger ui and redoc dependencies. * Fix: Remove required coreapi dependency. * Update Changelog * Feature: Add ``drf_yasg.inspectors.query.DrfAPICompatInspector``. (#857) * Feature: Provide to override default renderers via settings. * Feature: Enable tests for django 4.2. * Docs: Add information how to override ``DEFAULT_SPEC_RENDERERS``. * Feature: Add ``drf_yasg.inspectors.query.DrfAPICompatInspector``. This inspector should be main and replace ``CoreAPICompatInspector`` in the future. * [fix] Fixed map source mapping (#859) * Tests: Improve test coverage 95.91% -> 98.30%. (#862) * Update Changelog * Add python3.6 to the actions matrix but exclude it from tests * Allow swagger to use custom CSRF settings and read the CSRF cookie (#660) * Update README.rst to fix import error (#889) --------- Co-authored-by: Terry <wasin.th@gmail.com> Co-authored-by: Sumit Singh <sumit.singh4613@gmail.com> Co-authored-by: Core-Chan <i@coreja.com> Co-authored-by: Krista Mae Rectra <krista.rectra@gmail.com> Co-authored-by: mmurashov <m.murashov@ritm.media> Co-authored-by: Christoph Beckmann <cbe@colibri-media.de> Co-authored-by: MilanPecov <mpecov@yahoo.ca> Co-authored-by: Terence D. Honles <terence@honles.com> Co-authored-by: Cristi Vîjdea <cristi@cvjd.me> Co-authored-by: Max Vorobev <vmax0770@gmail.com> Co-authored-by: Damien Ramelet <damien.ramelet@protonmail.com> Co-authored-by: Petr Dlouhý <petr.dlouhy@email.cz> Co-authored-by: gopackgo90 <cbodendein@live.com> Co-authored-by: David Cain <davidjosephcain@gmail.com> Co-authored-by: Amir Andohkosh <4315615+amir-bio@users.noreply.github.com> Co-authored-by: Nikolaos Michas <nikos.mixas@outlook.com> Co-authored-by: Ignacio Orlandini <ignacioorlandini@gmail.com> Co-authored-by: Sergey Klyuykov <onegreyonewhite@mail.ru> Co-authored-by: Joel Lefkowitz <joel.lefkowitz@saltpay.co> Co-authored-by: Gagan Deep <the.one.above.all.titan@gmail.com> Co-authored-by: Ummer Farooq <69794127+pvfarooq@users.noreply.github.com>
My model:
My serializer:
My swagger view:
How to make the imagefield as required in swagger post request ?
The text was updated successfully, but these errors were encountered: