0

是否可以根据对象状态更改表单字段的必需属性(在模型表单和管理员中 - 如果可能)?

例如:我的数据库模型包含status字段,并且根据当前对象状态,某些状态值中应该需要一些其他字段,而在其他状态值中应该是可选的。

4

1 回答 1

0

更好的是,你可以在Model水平上做到这一点。

来自Django 文档

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,在表单字段上),并按照我上面演示的那样处理它们。

于 2013-04-07T14:52:50.003 回答