まず、ユーザーが管理者にログインすることはできません、それはその目標ではありません:ジャンゴの最も強力な部分の
つの自動adminインタフェースです。モデルからメタデータを読み込んで、モデル中心のインターフェイスを迅速に提供します。信頼できるユーザーは、サイトのコンテンツを管理できます。 管理者の推奨使用は、組織の内部管理ツールに限定されています。フロントエンド全体を構築するためのものではありません。
からDjango Admin Official Reference
管理者のみが「信頼できるユーザー」に限定されていることを考慮すると、その入力を検証する必要はありません。
フロントエンド(ユーザーのプロファイルスペースなど)にフォームを作成する必要があります。
このフォームで入力内容を確認するには、いくつかの選択肢があります。
フォームは、むしろ
form.save()
メソッドを呼び出すよりも、提出された
class ModerationModel(models.Model):
STATUS_CHOICES = [
('pending', _("Pending"),
('accepted', _("Accepted"),
('rejected', _("Rejected"),
]
submitter = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE)
submitter_ip = models.GenericIPAddressField()
date_submitted = models.DateTimeField(auto_now_add=True)
status = models.CharField(max_length=20, choices=STATUS_CHOICES)
form_class = models.CharField(
max_length=100,
help_text=_(
"Python dotted path to the Form class. Example: "
"myapp.forms.UserBiographyForm"
),
)
form_data = models.TextField(
help_text=_(
"Serialized form data"
),
)
、あなたはシリアル化されたフォームデータを含むModerationModel
インスタンスを作成し、カスタムメソッドを呼び出します:最も簡単なのは次のようになりModerationModel
を作成するために、おそらく。フォームデータのシリアル化を解除し、フォームインスタンスを再構築し、検証後に保存することができます。
その他の解決策は、モデルインスタンスの変更を追跡して変更を元に戻すことができるdjango-simple-historyなどのサードパーティアプリケーションを使用することです。