Python-Django-Model BooleanField依赖于同一模型中的其他BooleanField
我正在使用Django编写一个web应用程序,我想知道是否有可能在一个模型中有一个BooleanField,其值将基于同一模型中的其他BooleanField 基本上,我希望模型中的一个BooleanField为True,前提是模型中的所有其他BooleanField为True 例如,使用以下模型:Python-Django-Model BooleanField依赖于同一模型中的其他BooleanField,python,django,boolean,models,Python,Django,Boolean,Models,我正在使用Django编写一个web应用程序,我想知道是否有可能在一个模型中有一个BooleanField,其值将基于同一模型中的其他BooleanField 基本上,我希望模型中的一个BooleanField为True,前提是模型中的所有其他BooleanField为True 例如,使用以下模型: class ModelEx(models.Model): booleanA = models.BooleanField(default=False) booleanB = models.
class ModelEx(models.Model):
booleanA = models.BooleanField(default=False)
booleanB = models.BooleanField(default=False)
booleanC = models.BooleanField(default=False)
booleanD = models.BooleanField(default=False)
我希望booleanA是真的,只要booleanB和booleanC以及booleanD是真的
我还没有找到任何关于这方面的信息,所以如果有人知道是否有解决方案,那就太好了
谢谢。您可以覆盖模型的保存方法
class ModelEx(models.Model):
booleanA = models.BooleanField(default=False)
booleanB = models.BooleanField(default=False)
booleanC = models.BooleanField(default=False)
booleanD = models.BooleanField(default=False)
def save(self, *args, **kwargs):
self.booleanA = self.booleanA and self.booleanB and self.booleanC
return super(ModelEx, self).save(*args, **kwargs)
可以替代模型的保存方法。会是这样的
def save(self, *args, **kwargs):
self.booleanA = self.booleanB and self.booleanC and self.booleanD
return super(ModelEx, self).save(*args, **kwargs)
不要在save中传递kwargs,而是执行
def save(self,*args,**kwargs)
然后调用父级的save(super,ModelEx,self)。save(*args,**kwargs)另外,True
++True
不是3True
。如果例如booleanD
为False
,则booleanA
为2。不要使用self.booleanB和self.booleanC和self.booleanD
谢谢你这么敏锐的眼睛。谢谢大家的评论@我会验证你的答案,因为它确实把我带向了正确的方向。埃文斯·穆里希的评论确实是正确的,因此也要感谢你给出了准确的答案。不过我还有一个问题。当直接从DB接口修改数据时,将所有字段更改为true不会将字段A更改为true(即使在视图函数触发更改时,它也能正常工作)。你知道为什么吗?嗨,希瓦姆,非常感谢你的回答。这是正确的,但是已经提供了答案,所以我将第一个标记为正确答案。