# মডেল ভ্যালিডেশন করা

## মডেল ভ্যালিডেশন করা

&#x20;**স্ট্রিং লেন্থ চেক:**

```python
from django.core.validators import MaxLengthValidator, MinLengthValidator

class Book(models.Model):
    title = models.CharField(max_length=100, validators=[MaxLengthValidator(100), MinLengthValidator(5)])
```

&#x20;**ইমেল যাচাই:**

```python
from django.core.validators import EmailValidator

class Author(models.Model):
    email = models.EmailField(validators=[EmailValidator()])

```

**ফোন নম্বর যাচাই:**

```python
from django.core.validators import RegexValidator
from django.db import models

class UserProfile(models.Model):
    phone_regex = RegexValidator(
        regex=r'^\+?1?\d{9,15}$',
        message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed."
    )
    phone_number = models.CharField(validators=[phone_regex], max_length=17)

```

**পূর্ণসংখ্যা যাচাই:**

```python
from django.core.validators import MinValueValidator, MaxValueValidator

class Rating(models.Model):
    stars = models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(5)])

```

**তারিখ যাচাই:**

```python
from django.core.validators import DateValidator
from django.db import models

class Event(models.Model):
    date = models.DateField(validators=[DateValidator()])
```

**ইনফরম্ড ডেটা যাচাই:**

```python
from django.core.validators import URLValidator
from django.db import models

class Website(models.Model):
    url = models.URLField(validators=[URLValidator()])

```

**Default ভ্যালিডেশন ফাংশন:**

```python
from django.core.exceptions import ValidationError
class Item(models.Model):
    quantity = models.PositiveIntegerField(default=0)
    def clean(self):
        if self.quantity == 0:
            raise ValidationError("Quantity cannot be 0.")
```

**কাস্টম ভ্যালিডেশন ফাংশন:**

```python
from django.core.exceptions import ValidationError

def validate_even(value):
    if value % 2 != 0:
        raise ValidationError(
            _('%(value)s is not an even number'),
            params={'value': value},
        )

class EvenNumber(models.Model):
    number = models.IntegerField(validators=[validate_even])
```

**Unique ইউজার দেখা**

```python
from django.db import models
from django.core.validators import ValidationError
from django.utils.translation import gettext_lazy as _

def validate_unique_username(value):
    existing_users = User.objects.filter(username=value)
    if existing_users.exists():
        raise ValidationError(
            _('%(value)s already exists as a username.'),
            params={'value': value},
        )

class User(models.Model):
    username = models.CharField(
        max_length=30,
        unique=True,
        validators=[validate_unique_username],
    )

    def __str__(self):
        return self.username

```
