如果另一个属性(BooleanField)在 Django 中为真,如何使属性成为必需(或不需要)?

How to make an attribute required(or not) if another attribute(BooleanField) is True in Django?

我希望在创建博客时用户需要一个字段 post 就像其他字段 (BooleanField) 为 True 一样。如果为 False,则用户未完成任何操作也没关系。我该怎么做?

假设我有这个模型

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

所以,我希望只要 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)