2013-04-07 103 views
0

是否可以根據對象狀態(模型中和管理員 - 如果可能)更改表單字段的必需屬性?例如:我的數據庫模型包含status字段,並且根據當前對象狀態,某些其他字段在某些狀態值中應該是必需的,而在其他字段中是可選的。如何根據對象狀態改變表單域的需求?

回答

0

更好的是,你可以在Model級別上做到這一點。

Django docs

class MyModel(models.Model): 
    .... some fields here... 

    def clean(self): 
     from django.core.exceptions import ValidationError 
     # Don't allow draft entries to have a pub_date. 
     if self.status == 'draft' and self.pub_date is not None: 
      raise ValidationError('Draft entries may not have a publication date.') 
     # Set the pub_date for published items if it hasn't been set already. 
     if self.status == 'published' and self.pub_date is None: 
      self.pub_date = datetime.date.today() 

否則,如果這不是特別依賴於數據庫模型,您可以 同樣定義模型形式的clean方法。

here

更新:我剛剛得到了required屬性你提到。

沒有必要動態改變所需的屬性。 首先,RDBMS不支持這一點。有一個約束 或沒有。因此,由於這是業務邏輯而不是數據庫邏輯,因此您應該在這些字段上填寫null=True(必填= False,表單域),並按照上面的說明處理它們 。

+0

這正是我所錯過的,我已經在模型 – canni 2013-04-07 15:10:27

+0

@canni中有'null = True'很高興我幫了忙。 – rantanplan 2013-04-07 15:12:46

相關問題