是否可以根据对象状态更改表单字段的必需属性(在模型表单和管理员中 - 如果可能)?
例如:我的数据库模型包含status
字段,并且根据当前对象状态,某些状态值中应该需要一些其他字段,而在其他状态值中应该是可选的。
是否可以根据对象状态更改表单字段的必需属性(在模型表单和管理员中 - 如果可能)?
例如:我的数据库模型包含status
字段,并且根据当前对象状态,某些状态值中应该需要一些其他字段,而在其他状态值中应该是可选的。
更好的是,你可以在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
模型表单的方法。
看这里
更新:我刚得到required
你提到的属性。
无需动态更改所需属性。首先,RDBMS 不支持这一点。要么有约束,要么没有。因此,由于这是业务逻辑而不是数据库逻辑,您应该将null=True
这些字段(required=False,在表单字段上),并按照我上面演示的那样处理它们。