Как сделать атрибут обязательным (или нет), если другой атрибут (BooleanField) равен True в Django?

Я хочу, чтобы поле было обязательным для пользователя при создании записи в блоге, только если другое поле (BooleanField) равно True. Если оно False, то ничего страшного, если пользователь ничего не заполнит. Как я могу это сделать?

Допустим, у меня есть такая модель

class Post(models.Model): name = models.CharField(max_lenght=50)
class Post(models.Model). is_female = models.BooleanField()
> возраст = models.IntegerField()

Итак, я хочу, чтобы атрибут age требовался только в том случае, если is_female является True

Спасибо!

Вы можете переопределить метод clean:

from django.core.exceptions import ValidationError


class Post(models.Model): 
    name = models.CharField(max_lenght=50)  
    is_female = models.BooleanField()  
    age = models.IntegerField(blank=True, null=True)

    def clean(self, *args, **kwargs):
        if self.is_fermale and self.age == None:
            raise ValidationError('age cannot be None')
 
        super().clean(*args, **kwargs)

    def save(self, *args, **kwargs):
        self.full_clean()
        super().save(*args, **kwargs)
Вернуться на верх