Проверка поля DRF на подмножестве поля Модели - PullRequest
0 голосов
/ 03 мая 2020

Позвольте мне сначала сделать набросок соответствующих частей моего проекта Django / DRF с использованием некоторых соответствующих фрагментов (обратите внимание, что следующие фрагменты кода не приводят к рабочему коду, но показывают общую структуру моей проблемы):

models.py

class Sample(models.model):
    property_one = models.CharField(max_length=10, validators=property_one_validators)
    property_two = models.CharField(max_length=10, validators=property_two_validators)
    property_three = models.CharField(max_length=10, validators=property_three_validators)
    property_four = models.CharField(max_length=10, validators=property_four_validators)

serializers.py

class SampleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Sample
        fields = '__all__'

views.py

class SampleViewSet(viewsets.ModelViewSet):
    serializer = SampleSerializer

    @action(detail=True, methods=["get"])
    def method_one(self, request, pk):
        # Require property_one and property_three in request.data

    @action(detail=True, methods=["get"])
    def method_two(self, request, pk):
        # Require property_one and property_two in request.data

    @action(detail=True, methods=["get"])
    def method_three(self, request, pk):
        # Require property_two and property_four in request.data

Как вы можете видеть различные подмножества Sample параметры модели используются в доступных запросах API. То, что я хотел бы сделать, это проверить необходимые параметры в каждом запросе API, используя их соответствующие валидаторы (например, validate property_one с property_one_validators, определенным в models.py).

Из того, что я понимаю из Serializer документация, вы можете использовать validate для проверки заполненного заполненного класса Model (например, с property_one до property_four), но я бы хотел использовать тот же Serializer или, по крайней мере, его функциональные возможности для проверки полей отдельно ( например, используйте SampleSerializer для проверки property_one отдельно).

Мой вопрос в конечном счете, присутствует ли эта функциональность и возможно ли это. Если это не так, я хотел бы услышать ваше мнение о том, каков наиболее общий c способ выполнения этой проверки, вместо создания класса Serializer для каждого подмножества свойств.

...