2015-09-16 2 views
-1

В моделях django В столбцах n и в представлениях для запроса сохранения есть n столбцов, а затем, как проверять поля для модели, чтобы проверить, имеет ли запрос все обязательные переменные, для например:Django как проверить запрос во взглядах на модель

models.py

class candidate(models.Model): 
    name = models.IntegerField() 
    college = models.TextField() 
    city = models.TextField() 
    state = models.IntegerField(null=True) 
    country = models.CharField(max_length=255,null=True) 
    phone = models.IntegerField(null=True) 

views.py

def save(request): 
    try: 
    data = json.loads(request.body) 
    if 'name' in data and 'college' in data and 'city' in data: 
       //do something 

Является ли это правильный способ сделать это?

ответ

0

Поскольку вы не отметили имя поля, колледж, город как необязательный (то есть blank = True или null = True), ошибка будет автоматически отмечена, если эти поля отсутствуют.

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

class candidate(models.Model): 
    name = models.IntegerField() 
    college = models.TextField() 
    city = models.TextField() 
    state = models.IntegerField(null=True) 
    country = models.CharField(max_length=255,null=True) 
    phone = models.IntegerField(null=True) 

    def clean(self): 
     if (self.name is None) or (self.college' is None) or (self.city is None): 
      raise ValidationError('xxx') 

См https://docs.djangoproject.com/en/1.8/ref/models/instances/#validating-objects

+0

@ daniel не должна содержать логику проверки в самой модели, так что независимо от ввода через формы или сериализаторы (REST framework) выполняется та же проверка код повторно используется? – Tanuka

+0

Можете ли вы показать мне взгляды в этом случае – Rajeev

+0

Это будет зависеть от того, как вы принимаете вход пользователя - это через форму на веб-сайте (как предложил Даниэль) или через мобильное приложение через REST apis? – Tanuka

0

Нет. Вы используете для этого формы.

См. documentation on forms и how to use them with models.

+0

используется механизм, предназначенный для отдыха, а затем. Как предлагает Танука, Django Rest Framework. –

+0

, поэтому резюмировать, как указано в вопросе, является способ сделать это. Правильно? – Rajeev

+0

Нет. Никто не сказал об этом, и это не так. –

Смежные вопросы