Как применить частичную проверку в моделях Django на REST API - PullRequest
0 голосов
/ 21 января 2019

Я начинаю создавать REST API с Django, используя DRF.Я понял, что существуют проверки по умолчанию, которые можно применять к полям при определении класса Model.

Мне нужно знать, каким должен быть хороший подход для определения частичной проверки для поля.

Давайте рассмотрим следующую модель CLASS:

class Test(models.Model):
   a = models.CharField("A", max_length=100)    
   b = models.TextField("B", blank=True, null=True)
   c = models.TextField("C", null=True, blank=True) 

Теперь для поля a это обязательное поле, которое мне нужно, для полей b и c , я хочу, чтобы любой из них присутствовал всегда, то есть, если присутствует b, c может быть нулевым или пустым и наоборот.

Итак, я прочитал, что могу написатьСериализатор и связывающий код проверки внутри него, также я могу определить метод clean в моей модели, чтобы обеспечить логику проверки.

Может ли кто-нибудь предоставить мне пример?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Я думаю, вы можете использовать проверить Метод:

class MySerializer(serializers.ModelSerializer):

    def validate(self, data):            
        if data.get('c') or data.get('b'):
            return data
        raise serializers.ValidationError("Provide B or C")
0 голосов
/ 21 января 2019
В сериализаторе

есть метод get fields, где вы можете выполнять операции

class Test(serializer.Srailizers):
   a = serializer.CharField()    
   b = serializer.TextField()
   c = serializer.TextField()

   def get_fields(self):
      fields = super().get_fields()
      # check you logic here and make change
      fields['b'].required = False
      return fields
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...