基本構成xadmin
- Djangoプロジェクトのルートディレクトリにxadmin源と、
- setting.py:
INSTALLED_APPS=[...,'crispy_forms','Xadmin',...]
- インストールxadminの依存関係:
pip3 install django-crispy-forms django-import-export django-reversion django formtools future httplib2 six xlwt xlsxwriter requests
- 表xadminの必要性を作成します。
python3 manage.py migrate
- 設定したアクセス住所:urls.py:
path('xadmin/', xadmin.site.urls)
xadmin構成リスト、検索とフィルタリング
登録されたモデルクラス:1アプリケーションでadminx.pyを作成します; 2。
xadmin.site.register(modlename1,modlename2,...)
バックグラウンドでアプリケーション名を設定します。apps.pyアドオンアプリケーション
verbose_name='appname'
モデルマネージャの作成:
class ModlenameAdmin(object): list_display=['colume1','colume2',...] # 显示的字段 search_fields=['colume1','colume2',...] # 搜索的字段 list_filter=['colume1','colume2',...] # 过滤的字段 list_editable=['colume1','colume2',...] # 在页面中直接编辑的字段 ''' 1.列表中可以是字段,也可以是方法名 2.如果表中含有外键,根据外键表的某个字段过滤则可以使用'tablename__column'格式写入 '''
グローバルコンフィギュレーションxadmin
アプリケーション/adminx.pyで
class GlobalSettings(object): site_title = "左上角文字" site_footer = "页面底部文字" menu_style = "accordion" # 折叠左侧标题栏 xadmin.site.register(xadmin.views.CommAdminView, GlobalSettings) class BaseSettings(object): enable_themes = True # 页面主题设置 use_bootswatch = True xadmin.site.register(xadmin.views.BaseAdminView, BaseSettings)
高度な構成xadmin
ページレイアウトエディタを変更します。
参考xadmin /プラグイン/ auth.py:デフget_form_layout(自己)
モデルManagerは、コメントを追加しました:
def get_form_layout(self): if self.org_obj: # 判断是否是编辑页面 self.form_layout = ( Main( Fieldset("讲师信息", # 块名称 'teacher','course_org', css_class='unsort no_title' ), Fieldset("基本信息", 'name', 'desc', Row('learn_times', 'degree'), # 两个字段在一行 Row('category', 'tag'), 'youneed_know', 'teacher_tell', 'detail', ), ), # 在页面右侧显示 Side( Fieldset("访问信息", 'fav_nums', 'click_nums', 'students','add_time' ), ), Side( Fieldset("选择信息", 'is_banner', 'is_classics' ), ) ) return super(NewCourseAdmin, self).get_form_layout()
著作権管理:バルク管理者ユーザー権限----->グループ
ユーザーの権限に基づいてフィルタ一覧ページのデータ:
モデルManagerは、コメントを追加しました:
def queryset(self): qs = super().queryset() # if not self.request.user.is_superuser: # 判断用户权限 qs = qs.filter(is_banner=True) return qs
保存、および制御ロジックを変更
モデル・マネージャに、過負荷DEF save_models()メソッド
def save_models(self): obj = self.new_obj # 获取编辑对象 if not obj.id: # 判断是新增页面还是编辑页面 obj.save() course = obj.course course.students += 1 course.save()
オーバーロードされるxadmin源では、この方法は、基準xadmin /ビュー/ edit.pyと、@filter_hook装飾され
複数のマネージャが同じテーブルを管理します
新モデルは---->クラスModelone(モデル名)クラスの継承モデルを動作させます。
class Modelone(Modelname): # 新的model 继承已有的模型类 class Meta: verbose_name = "xxx" verbose_name_plural = verbose_name proxy = True # 在migrate的时候不会生成新的表
ModelAdminのマネージャーの作成と登録
class ModeloneAdmin(object): # 新建管理器 pass class ModelAdmin(object): # 已有管理器 pass # 注册管理器 xadmin.site.register(Modelone, ModeloneAdmin) xadmin.site.register(Model, ModelAdmin)
一覧ページが表示された画像
この方法は、カスタムモデルクラスを追加します
def show_image(self): from django.utils.safestring import mark_safe return mark_safe("<img src='{}'>".format(self.image.url)) show_image.short_description = "图片" # 设置方法在列表页中的显示名称
その他のカスタムメソッドは、同じように添加してもよいです。
モデルマネージャで、
list_display = [...,'show_image',...] # 添加到显示列表中
読み取り専用フィールドの設定、およびフィールドを除外し、デフォルトのソート
以下のモデルマネージャを追加
# !!!注意:某个字段不能同时存在于只读和隐藏中 # 只读字段 readonly_fields=['xx','xx',....] # 隐藏字段 exclude=['xx','xx',...] # 根据某个字段排序 ordering=['xx','xx',...]
モデル・アイコンのアイコンによって変更xadminの背景モデル
- アイコンの名前でXXXX =「」FA FA-XXXX」マネージャーの追加model_icon
- 参考xadmin /静的/ xadmin /ベンダー/フォント素晴らしい(サードパーティのライブラリをチャート)
- フォント恐ろしいxadmin置き換えるダウンロードしてライブラリをグラフ化きます
- 中国の公式サイトのアイコン名をコピーし、model_iconの値を変更
同じページエディタで複数のテーブルのインライン設定
adminx.py
class LessonInline(object): model = Lesson # 指明模型(表) extra = 0 # 打开页面时默认不添加数据,无标签页 style = 'tab' # 标签页形式 最好注销不进行设置,避免出现bug exclude = ['',''] # 隐藏字段
モデルマネージャインラインに属性を追加します。= [LessonInline]
ueditorリッチテキストエディタ
プロジェクトのルートディレクトリにDjangoUeditor源と、
設定setting.py
INSTALLED_APPS = [ ... 'DjangoUeditor', ... ]
設定urls.py
urlpatterns = [ ... #配置富文本相关的url url(r'^ueditor/',include('DjangoUeditor.urls' )), ]
使用中のモデルに
エディタのフィールドには、いくつかのパラメータ:( GitHubのリファレンス)を変更するために必要な
xxx = UEditorField(verbose_name="xx", width=600, height=300, imagePath="courses/ueditor/images/", filePath="courses/ueditor/files/", default="")
xadminは、プラグインを必要とし、ueditorをサポートしていません。
- プラグインのコピー----> xadmin / plugins /に(以下ueditor.pyを使用して、新しいコンテンツ)
import xadmin from xadmin.views import BaseAdminPlugin, CreateAdminView, ModelFormAdminView, UpdateAdminView from DjangoUeditor.models import UEditorField from DjangoUeditor.widgets import UEditorWidget from django.conf import settings class XadminUEditorWidget(UEditorWidget): def __init__(self,**kwargs): self.ueditor_options=kwargs self.Media.js = None super(XadminUEditorWidget,self).__init__(kwargs) class UeditorPlugin(BaseAdminPlugin): def get_field_style(self, attrs, db_field, style, **kwargs): if style == 'ueditor': if isinstance(db_field, UEditorField): widget = db_field.formfield().widget param = {} param.update(widget.ueditor_settings) param.update(widget.attrs) return {'widget': XadminUEditorWidget(**param)} return attrs def block_extrahead(self, context, nodes): js = '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.config.js") #自己的静态目录 js += '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.all.min.js") #自己的静态目录 nodes.append(js) xadmin.site.register_plugin(UeditorPlugin, UpdateAdminView) xadmin.site.register_plugin(UeditorPlugin, CreateAdminView)
- ファイル名に追加/xadmin/plugins/init.py PLUGINS
プロパティマネージャーを追加
style_fields = { "columnname":"ueditor" }
これは、フロントエンドテンプレートで表示されます。
ストレージSTR中のデータ構造ので、HTMLテンプレートに付加位置に表示されるフィールド
{%Autoescape%オフ} {{ColumnNameのは}} {%endautoescape%は}、STRは、HTMLコードに変換します。
データ構成のインポートとエクスポート
ueditorを追加するのと同じ
- /xadmin/plugins/importexport.py
- /xadmin/plugins/init.py PLUGINSは、重複を避けるために、ファイル名に輸出の取り消しを追加しました。