既存のプロジェクトの新しい機能を開発する必要があります。この機能は、データベースへの保存/データベースからの削除の前に、管理者ユーザーが定義したルールに従って、モデル インスタンスのフィールド値の検証をチェックすることです。django がカスタムロジックを定義できるフォームフィールド検証メカニズムを提供していることは知っていますが、ルールが定義されているモデルとフィールドは予測できず、すべてのモデルに対応するフォームがあるわけではないため、それは正しい方法ではないようです。シナリオ全体を例で説明した方がよいと思います。
次のように 3 つのルールを定義した管理者ユーザーがあり、ルールはデータベースに保存されます。
Rule 1:
model: Book
field: author
operator: is
values: Shakespeare
Rule 2:
model: Book
field: publish_date
operator: greater than
values: 2000-1-1
Rule 3:
model: Book
field: publisher.location (Book has a ForeignKey relationship to Publisher)
operator: not in
values: U.K.
そのため、ログインしているユーザーがシェイクスピア以外の著作の Book オブジェクトを保存したい場合、または出版社の所在地が英国にある場合、操作を拒否し、いくつかの規則に違反しているため操作を完了できないことをユーザーに通知します。また、ユーザーはシェイクスピアの著作ではない書籍を表示する可能性がありますが、それを削除する方法はありません。
私が考えることができる 1 つのオプションは、すべての潜在的なルール制約モデルで pre_save を使用し、モデルにルールが存在するかどうかを確認してから、そこで検証を行うことですが、多くのモデルがあるため、これは既存のシステムに対する変更が多すぎるようです。
この種の作業を行う簡単な方法があるかどうか疑問に思っていますか?