blog

Django Xadmin 要約の落とし穴の一部

まず、Xadminは、Usersモジュールの登録のための登録情報Xadminのデフォルトを変更しますが、時にはコンテンツの表示や新しいユーザーの必須フィールドが表示されない、ここではUserAdmin...

Jun 8, 2020 · 3 min. read
シェア

I. XadminによるUsersAdmin登録情報の変更

XadminのデフォルトはUsersモジュールの登録ですが、表示内容や新規ユーザの必須フィールドが表示されないことがあります。ここでは、UserAdminの表示内容をカスタマイズする2つの方法を紹介します。

  1. オンラインドキュメントによると、admin.pyでカスタムUserAdmin、カスタム表示フィールドなどを作成し、unregisterを実行した後、カスタムUserAdminを登録すると、コードは次のようになります。
import xadmin
from django.contrib.auth import get_user_model	#このメソッドは、ユーザーモデルを見つけるのに役立つ
#  
class UserAdmin2(object):		
 list_display = ("username", "name", "workid", 'user_type','date_joined','last_login')
 # 表示、検索、フィルターなど、その他のフィールドをカスタマイズする。
)
# 登録手続きを実行する
xadmin.site.unregister(get_user_model())
xadmin.site.register(get_user_model(),UserAdmin2)
  1. xadminコードの変更

    xadmin => plugins => auth.pyUserAdminモジュールの変更のxadmin種類を見つけ、パス:約61行は、UserAdminモジュールを見つけるには、コンテンツをカスタマイズすることができます。

私は最初の方法を使用すると、ユーザーが未登録のバグを報告されている、長い時間を取得しますが、良いではありませんが、最終的に2番目の方法を使用します。

次に、新規ユーザーページにカスタムフィールドを追加します。

Users Model 内の私のプロジェクトは django の AbstractUser を継承し、フィールドのいくつかをカスタマイズしているため、フィールドのいくつかは必須であり、xadmin のデフォルトの追加ユーザインタフェースは username, password1, password2 のみであり、その結果、私の新規ユーザはエラーになりました。

xadmin => plugins => auth.py self.form = UserCreationFormxadminのUserAdminモジュールを見つけて、パス: 、81行目あたりを見つけて、UserCreateFormモジュールに行って、カスタムフィールドを追加することができます、私は2つの必須フィールドを追加しました。

name = forms.CharField(
 # 長さを制限する
 max_length=30,
 # 名前を表示する
 label=' ',
 # 表示するメモ
 help_text='名前を入力する'
)
workid = forms.CharField(
 # 長さを制限する
 max_length=30,
 # 名前を表示する
 label=' ',
 # 表示するメモ
 help_text='ジョブ番号を入力する'
)
# カスタムフィールドを追加したら、上で追加したフィールドをMetaのフィールドに追加する。
class Meta:
	...
	fields = ("username","name","workid")
 ...

フィールドを追加したら、もう一度新規UIを開くと、追加されたフィールドが表示されます。

第三に、データテーブルのチャートを追加します。

データシート・ページにグラフィカルな表を表示したい場合は、モデル OptionClass 定義に以下のフィールドを追加します。

class RecordAdmin(object):
 data_charts = {
 "user_count": {'title': u"User Report", "x-field": "date", "y-field": ("user_count", "view_count"), "order": ('date',)},
 "avg_count": {'title': u"Avg Report", "x-field": "date", "y-field": ('avg_count',), "order": ('date',)}
 }
# チャートの主なプロパティは以下の通りである。:
# ``title`` : チャートの表示名
# ``x-field`` : チャートのX軸データ列、通常は日付、時刻など。
# ``y-field`` : チャートのY軸データ列、この項目はリストであり、同時に複数の列を設定することができ、複数の列のデータが同じチャートに表示される。
# ``order`` : 情報の並べ替え、もし書かなければ、データリストの並べ替えを使うことができる。

これは、基本的なデータ・グラフを表示するだけの簡単なグラフ表です。

つ目は、データを追加する際に、フィールドのデフォルト値を追加することです。

データを追加する際に、データ追加者フィールドがあり、毎回ユーザーを選択する必要があり、非常に面倒なので、ModelAdminのsave_modelsメソッドを再定義して、フィールドにデフォルト値を追加することができます。

class DataAdmin(object):
	...
 def save_models(self):
 obj = self.new_obj
 request = self.request
 # フィールドのデフォルト値を現在ログインしているユーザーに設定する。
 obj.user = request.user.name
 obj.save()

このように、データを追加するときは、ユーザーを入力する必要があり、デフォルトは、現在のログインユーザー名になります、非常に便利な、同様に、あなたのニーズを満たすために、他の組み込みメソッドを書き換えることができます。

Read next

nginxの基本設定とよく使うコマンドを1日1回、忘れないようにする

バックアップを取らなかった私がバカでした、まだnginxを使うのは初めてなので、落とし穴に足を踏み入れてしまいました、今後またコミットしないように記録しておきます。私はまた、水文学はそれを必要とする人々に少し助けをもたらすことができることを願って、また優れています。 nginx.exe 言うまでもなく、ダブルクリックで起動します。 トピックの内容は大まかに以下のブロックに分かれています httpブロック -> サーバブロック -> ロケーションブロック; httpのみ ...

Jun 8, 2020 · 5 min read