Нельзя устанавливать одновременно `read_only` и `required` в двух разных сериализаторах

Первый сериализатор:

class RecipeSerializer(serializers.ModelSerializer):

    step_of_recipe = RecipeStepsSerializer(many=True,
                                           required=False)
    ingredients = serializers.StringRelatedField(many=True,
                                                 read_only=True) # <----
    by_cook = serializers.StringRelatedField(read_only=True)

Второй сериализатор:

class RecipeCreateSerializer(serializers.ModelSerializer):

    step_of_recipe = RecipeStepsSerializer(many=True,
                                           required=True)
    ingredients = serializers.StringRelatedField(many=True,
                                                 required=True) # <----

Traceback:

web_1  |   File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
web_1  |   File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
web_1  |   File "<frozen importlib._bootstrap_external>", line 883, in exec_module
web_1  |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
web_1  |   File "/code/apps/recipe/urls.py", line 2, in <module>
web_1  |     from apps.recipe.views.recipe import RecipeView, RecipeCreateView
web_1  |   File "/code/apps/recipe/views/recipe.py", line 3, in <module>
web_1  |     from apps.recipe.serializers.recipe import RecipeSerializer, RecipeCreateSerializer
web_1  |   File "/code/apps/recipe/serializers/recipe.py", line 57, in <module>
web_1  |     class RecipeCreateSerializer(serializers.ModelSerializer):
web_1  |   File "/code/apps/recipe/serializers/recipe.py", line 61, in RecipeCreateSerializer
web_1  |     ingredients = serializers.StringRelatedField(many=True,
web_1  |   File "/usr/local/lib/python3.10/site-packages/rest_framework/relations.py", line 123, in __new__
web_1  |     return cls.many_init(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.10/site-packages/rest_framework/relations.py", line 143, in many_init
web_1  |     list_kwargs = {'child_relation': cls(*args, **kwargs)}
web_1  |   File "/usr/local/lib/python3.10/site-packages/rest_framework/relations.py", line 237, in __init__
web_1  |     super().__init__(**kwargs)
web_1  |   File "/usr/local/lib/python3.10/site-packages/rest_framework/relations.py", line 117, in __init__
web_1  |     super().__init__(**kwargs)
web_1  |   File "/usr/local/lib/python3.10/site-packages/rest_framework/fields.py", line 336, in __init__
web_1  |     assert not (read_only and required), NOT_READ_ONLY_REQUIRED
web_1  | AssertionError: May not set both `read_only` and `required`

Как вы можете видеть, у меня есть два разных сериализатора, в первом из них поле ингредиентов является read_only, однако во втором - required. Имеет ли это какой-либо смысл, то есть у меня есть два разных сериализатора, и я не могу установить поля по-разному?

Вернуться на верх