如果另一个属性(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)
我希望在创建博客时用户需要一个字段 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)