from django.core.exceptions import ValidationError
from django.core.validators import MinValueValidator
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=2, validators=[MinValueValidator(0.01)])
stock = models.IntegerField()
def clean(self):
if self.stock < 0:
raise ValidationError('Stock cannot be negative')
if self.price > 10000:
raise ValidationError('Price cannot exceed 10000')
# Hari creates a product:
product = Product(name='Laptop', price=15000, stock=-5)
product.save()Django Model Validation: clean() Method vs Validators
The save() will fail because the clean() method validates that price <= 10000 and stock >= 0.
The save() will succeed because clean() is not automatically called by save(); you must explicitly call product.clean() before saving.
The save() will fail because the MinValueValidator on price field prevents values over 10000.
The save() will fail because Django automatically validates all fields defined in the model.
Show answer & explanationAnswer
Correct answer
The save() will succeed because clean() is not automatically called by save(); you must explicitly call product.clean() before saving.
Explanation
Field validators run during form validation and model validation (via clean()), but model.save() bypasses the clean() method. The clean() method must be explicitly called. The MinValueValidator will not prevent negative stock because it only applies to the price field.
All 30 Django Models and Database Design questions
- 1.What is the primary purpose of Django Models?
- 2.Which field type should be used to store an email address in a Django Model?
- 3.What does the Meta class inside a Django Model do?
- 4.Which relationship type is used when one model can have many instances of another model?
- 5.What is the purpose of the `__str__` method in a Django Model?
- 6.Which field attribute makes a field mandatory in Django Models?
- 7.What does the `on_delete` parameter do in a ForeignKey relationship?
- 8.Which of the following is a valid Django field type for storing boolean values?
- 9.What is the default behavior when you don't specify `null=True` for a field in Django?
- 10.Which method is used to retrieve a single object from the database in Django?
- 11.Understanding Django Model Meta Options
- 12.Scenario:
- 13.Django QuerySet Filter vs Get Method
- 14.Coding:
- 15.Scenario:
- 16.Understanding Django Model Inheritance
- 17.Coding:
- 18.Scenario:
- 19.Django Model Manager and QuerySet Methods
- 20.Coding:
- 21.Django Model Inheritance Strategy Selection
- 22.Django QuerySet Optimization with select_related vs prefetch_related
- 23.Django Model Field Choices and Validation
- 24.Django Model Relationships:
- 25.Django Model Signals and Database Consistency
- 26.Django Model Meta Options:
- 27.Django Model Managers and Custom QuerySets
- 28.Django Model Field:
- 29.Django Model Validation:
- 30.Django Model Aggregation and Annotation
