2016-07-16 9 views
0

私はいくつかのdjangoモデルエントリーフォームを使用して、私たちのウェブサイトに掲載されているいくつかの経歴情報を更新しています。自分のユーザー名で/ adminにログインして自分の伝記を更新してもらいたいのですが、リアルタイムでWebページを更新できるようにしたくありません。私はモデルを更新して私に通知できるようになったらそれが可能かどうか疑問に思っていました。そしてある種のmanage.pyコマンドでそれを大丈夫にすることができます。Django:テンプレートを更新する - 通知する

ミラーデベサイトを設定してから、その情報を私の配備にプッシュする方が簡単かもしれませんか?

答えて

1

まず、ユーザーが管理者にログインすることはできません、それはその目標ではありません:ジャンゴの最も強力な部分の

つの自動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などのサードパーティアプリケーションを使用することです。

関連する問題