Как сделать атрибут обязательным (или нет), если другой атрибут (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)