0

オブジェクトの状態に基づいてフォーム フィールドの必須属性を変更することは可能ですか (可能な場合はモデルフォームと管理者で)?

例:私のDBモデルには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あなたが言及した属性を取得しました。

required 属性を動的に変更する必要はありません。まず第一に、RDBMS はそれをサポートしていません。制約があるか、ないかのどちらかです。したがって、これはビジネス ロジックであり、DB ロジックではないためnull=True、これらのフィールド (required=False、フォーム フィールド) を配置し、上記で示したように処理する必要があります。

于 2013-04-07T14:52:50.003 に答える