2017-02-12 75 views
0

我正在使用Django編寫一個Web應用程序,並想知道是否有可能有一個布爾值字段中的值將基於其他模型同一模型中的BooleanFields。Python - Django - 模型BooleanField依賴於其他BooleanField在同一模型

基本上,我希望模型中的一個BooleanField只有在模型中的所有其他BooleanField都爲True時才爲True。

例如,與下面的型號:

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爲True只有booleanB和booleanC和booleanD是真實的。

我還沒有找到任何關於這方面的信息,所以如果有人知道是否有解決方案,這將是非常好的。

謝謝。

回答

0

您可以覆蓋模型的保存方法。

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) 
+1

,而不是傳遞kwargs中保存,做'高清保存(個體經營,* ARGS,** kwargs)'然後調用父類的保存與他們'超(ModelEx,個體經營).save(* ARGS,* * kwargs)' –

+1

另外,'True' +'True' +'True'是3不是'True'。如果例如'booleanD'爲'False',則'booleanA'爲2.使用'self.booleanB和self.booleanC和self.booleanD'代替 –

+0

感謝這麼敏銳的目光。 –

0

您可以覆蓋模型的保存方法。它會是這樣的。

def save(self, *args, **kwargs): 
    self.booleanA = self.booleanB and self.booleanC and self.booleanD 
    return super(ModelEx, self).save(*args, **kwargs) 
+0

嗨shivam,非常感謝您的回答。這是正確的,但已經提供了答案,所以我將第一個標記爲正確的標記。 – RobinW2

相關問題