В чем разница между методом Model.clean()
и методом Model.clean_fields()
?. Когда следует использовать одно или другое?.
В соответствии с документацией метода Model.clean_fields()
:
Этот метод проверяет все поля на вашей модели. Необязательный аргумент exclude позволяет вам предоставить список имен полей, которые нужно исключить из проверки. Он вызовет ValidationError, если какие-либо поля не пройдут валидацию.
. , .
Таким образом, метод Model.clean_fields()
используется для проверки полей моей модели.
В соответствии с документацией метода Model.clean()
:
Этот метод должен использоваться для обеспечения пользовательской проверки модели и для изменения атрибутов в вашей модели, если это необходимо. Например, вы можете использовать его для автоматического предоставления значения для поля или для проверки, требующей доступа к более чем одному полю
. , .
Но этот метод должен использоваться для других проверок, но среди них вы можете выполнять проверки для различных полей . И в Django примерах метода Model.clean()
проверки выполняются для полей:
class Article(models.Model):
...
def clean(self):
# Don't allow draft entries to have a pub_date.
if self.status == 'draft' and self.pub_date is not None:
raise ValidationError(_('Draft entries may not have a publication date.'))
# Set the pub_date for published items if it hasn't been set already.
if self.status == 'published' and self.pub_date is None:
self.pub_date = datetime.date.today()
Так, например, если я хочу проверить поле, в каком из двух методов я должен это сделать?
И для чего именно должны использоваться методы? так как я не очень хорошо понимаю, почему они должны быть использованы точно. Было бы очень полезно привести примеры, где вы можете увидеть разницу между методами, чтобы точно знать, для чего эти методы следует использовать.