是否可以根据对象状态更改表单字段的必需属性(在modelforms和admin中 - 如果可能)?
例如:我的数据库模型包含status
字段,并且根据当前对象状态,在某些状态值中应该需要一些其他字段,在其他状态值中可以选择其他字段。
答案 0 :(得分:0)
更好的是,你可以在Model
级别上进行。
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()
否则,如果这与db模型没有特别的联系,你可以
类似地定义模型表单的clean
方法。
请参阅here
更新:我刚收到你提到的required
属性。
无需动态更改所需属性。
首先,RDBMS不支持这一点。要么有约束
或者没有。因为这是业务逻辑而不是DB逻辑,
你应该把null=True
放在这些字段上(必需= False,在表单字段上),并处理它们
正如我上面所说明的那样。