2013-04-07 47 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

相关问题