コード例 #1
0
    def get_form_layout(self):
        layout = copy.deepcopy(self.form_layout)
        arr = self.form_obj.fields.keys()
        arr = [k for k in arr]
        fields = arr + list(self.get_readonly_fields())

        if layout is None:
            layout = Layout(Container(Col('full',
                                          Fieldset("", *fields, css_class="unsort no_title"), horizontal=True, span=12)
                                      ))
        elif type(layout) in (list, tuple) and len(layout) > 0:
            if isinstance(layout[0], Column):
                fs = layout
            elif isinstance(layout[0], (Fieldset, TabHolder)):
                fs = (Col('full', *layout, horizontal=True, span=12),)
            else:
                fs = (Col('full', Fieldset("", *layout, css_class="unsort no_title"), horizontal=True, span=12),)

            layout = Layout(Container(*fs))

            rendered_fields = [i[1] for i in layout.get_field_names()]
            container = layout[0].fields
            other_fieldset = Fieldset(_(u'Other Fields'), *[f for f in fields if f not in rendered_fields])

            if len(other_fieldset.fields):
                if len(container) and isinstance(container[0], Column):
                    container[0].fields.append(other_fieldset)
                else:
                    container.append(other_fieldset)

        return layout
コード例 #2
0
ファイル: detail.py プロジェクト: zhuf/django-xadmin
    def get_form_layout(self):
        layout = copy.deepcopy(self.detail_layout or self.form_layout)

        if layout is None:
            layout = Layout(Container(
                Fieldset("", *self.form_obj.fields.keys(), css_class="unsort no_title"), css_class="form-horizontal"
            ))
        elif type(layout) in (list, tuple) and len(layout) > 0:
            if isinstance(layout[0], Column):
                layout = Layout(Container(*layout))
            elif isinstance(layout[0], Fieldset):
                layout = Layout(
                    Container(*layout, css_class="form-horizontal"))
            else:
                layout = Layout(Container(Fieldset("", *layout, css_class="unsort no_title"), css_class="form-horizontal"))

            if self.detail_show_all:
                rendered_fields = [i[1] for i in layout.get_field_names()]
                container = layout[0].fields
                other_fieldset = Fieldset(_(u'Other Fields'), *[f for f in self.form_obj.fields.keys() if f not in rendered_fields])

                if len(other_fieldset.fields):
                    if len(container) and isinstance(container[0], Column):
                        container[0].fields.append(other_fieldset)
                    else:
                        container.append(other_fieldset)

        return layout
コード例 #3
0
ファイル: adminx.py プロジェクト: linwenjunid/myprojects
 def get_form_layout(self):
     if self.request.user.is_superuser:
         self.form_layout = Layout(Container(Col('full',
                                                 Fieldset(
                                                     "", "title", "content", "user", css_class="unsort no_title"),
                                                 horizontal=True, span=12)
                                             ))
     else:
         self.form_layout = Layout(Container(Col('full',
                                                 Fieldset(
                                                     "", "title", "content", css_class="unsort no_title"),
                                                 horizontal=True, span=12)
                                             ))
     return super(ArticleAdmin, self).get_form_layout()
コード例 #4
0
    def get_form_layout(self):
        """
        返回 Form Layout ,如果您设置了 :attr:`detail_layout` 属性,则使用 :attr:`form_layout` 属性,如果都没有该方法会自动生成 Form Layout 。
        有关 Form Layout 的更多信息可以参看 `Crispy Form 文档 <http://django-crispy-forms.readthedocs.org/en/latest/layouts.html>`_
        设置 Form Layout 可以非常灵活的显示页面的各个元素
        """
        # 复制避免修改属性值
        layout = copy.deepcopy(self.detail_layout or self.form_layout)

        if layout is None:
            layout = Layout(
                Container(
                    Col('full',
                        Fieldset("",
                                 *self.form_obj.fields.keys(),
                                 css_class="unsort no_title"),
                        horizontal=True,
                        span=12)))
        elif type(layout) in (list, tuple) and len(layout) > 0:
            # 如果设置的 layout 是一个列表,那么按以下方法生成
            if isinstance(layout[0], Column):
                fs = layout
            elif isinstance(layout[0], (Fieldset, TabHolder)):
                fs = (Col('full', *layout, horizontal=True, span=12), )
            else:
                fs = (Col('full',
                          Fieldset("", *layout, css_class="unsort no_title"),
                          horizontal=True,
                          span=12), )

            layout = Layout(Container(*fs))

            if self.detail_show_all:
                # 显示没有在 Layout 中出现的字段
                rendered_fields = [i[1] for i in layout.get_field_names()]
                container = layout[0].fields
                other_fieldset = Fieldset(
                    _(u'Other Fields'), *[
                        f for f in self.form_obj.fields.keys()
                        if f not in rendered_fields
                    ])

                if len(other_fieldset.fields):
                    if len(container) and isinstance(container[0], Column):
                        container[0].fields.append(other_fieldset)
                    else:
                        container.append(other_fieldset)

        return layout
コード例 #5
0
ファイル: edit.py プロジェクト: ldsxp/xadmin-py3
    def get_form_layout(self):
        """
        返回 Form Layout ,如果您设置了 :attr:`form_layout` 属性,则使用该属性,否则该方法会自动生成 Form Layout 。
        有关 Form Layout 的更多信息可以参看 `Crispy Form 文档 <http://django-crispy-forms.readthedocs.org/en/latest/layouts.html>`_
        设置 Form Layout 可以非常灵活的显示表单页面的各个元素
        """
        layout = copy.deepcopy(self.form_layout)
        arr = self.form_obj.fields.keys()
        if six.PY3:
            arr = [k for k in arr]
        fields = arr + list(self.get_readonly_fields())

        if layout is None:
            layout = Layout(
                Container(
                    Col('full',
                        Fieldset("", *fields, css_class="unsort no_title"),
                        horizontal=True,
                        span=12)))
        elif type(layout) in (list, tuple) and len(layout) > 0:
            # 如果设置的 layout 是一个列表,那么按以下方法生成
            if isinstance(layout[0], Column):
                fs = layout
            elif isinstance(layout[0], (Fieldset, TabHolder)):
                fs = (Col('full', *layout, horizontal=True, span=12), )
            else:
                fs = (Col('full',
                          Fieldset("", *layout, css_class="unsort no_title"),
                          horizontal=True,
                          span=12), )

            layout = Layout(Container(*fs))

            rendered_fields = [i[1] for i in layout.get_field_names()]
            container = layout[0].fields
            other_fieldset = Fieldset(
                _(u'Other Fields'),
                *[f for f in fields if f not in rendered_fields])

            # 将所有没有显示的字段和在一个 Fieldset 里面显示
            if len(other_fieldset.fields):
                if len(container) and isinstance(container[0], Column):
                    # 把其他字段放在第一列显示
                    container[0].fields.append(other_fieldset)
                else:
                    container.append(other_fieldset)

        return layout
コード例 #6
0
ファイル: adminx.py プロジェクト: choupihuan/typeidea
class PostInline:
    form_layout = (
        Container(Row('title','desc')
        )
    )
    extra = 1
    model = Post
コード例 #7
0
ファイル: adminx.py プロジェクト: anstones/blogsystem
class PostInline:
    form_layout = (
        Container(
            Row("title", "desc"),
        )
    )
    extra = 1 # 控制额外多几个
    model = Post
コード例 #8
0
ファイル: adminx.py プロジェクト: JasonZhao86/typeidea
class PostInline:
    form_layout = (
        Container(
            Row("title", "desc")
        ),
    )
    extra = 1    # 定义额外内联表单(空的表单,用于新增)的数量为1
    model = Post
コード例 #9
0
ファイル: adminx.py プロジェクト: Mark-Jordan/blog
class PostInline:
    # xamdin 处理inline
    form_layout = (Container(Row('title', 'desc'), ))

    # admin的使用方法
    # fields = ('title', 'desc')
    extra = 1
    model = Post
コード例 #10
0
class PostInline:
    """
    可选择继承自admin.StackedInline,以获取不同的展示样式
    """

    form_layout = (Container(Row("title", "desc")))
    extra = 1  # 控制额外多几个
    model = Post
コード例 #11
0
class PostInline:  # StackedInline 样式不同
    form_layout = (
        Container(
            Row('title', 'desc')
        )
    )
    extra = 0  # 控制额外多几个
    model = Post
コード例 #12
0
    def get_form_layout(self):
        layout = copy.deepcopy(self.detail_layout or self.form_layout)

        if layout is None:
            layout = Layout(
                Container(
                    Col(
                        "full",
                        Fieldset("",
                                 *self.form_obj.fields.keys(),
                                 css_class="unsort no_title"),
                        horizontal=True,
                        span=12,
                    )))
        elif type(layout) in (list, tuple) and len(layout) > 0:
            if isinstance(layout[0], Column):
                fs = layout
            elif isinstance(layout[0], (Fieldset, TabHolder)):
                fs = (Col("full", *layout, horizontal=True, span=12), )
            else:
                fs = (Col(
                    "full",
                    Fieldset("", *layout, css_class="unsort no_title"),
                    horizontal=True,
                    span=12,
                ), )

            layout = Layout(Container(*fs))

            if self.detail_show_all:
                rendered_fields = [i[1] for i in layout.get_field_names()]
                container = layout[0].fields
                other_fieldset = Fieldset(
                    _(u"Other Fields"), *[
                        f for f in self.form_obj.fields.keys()
                        if f not in rendered_fields
                    ])

                if len(other_fieldset.fields):
                    if len(container) and isinstance(container[0], Column):
                        container[0].fields.append(other_fieldset)
                    else:
                        container.append(other_fieldset)

        return layout
コード例 #13
0
ファイル: adminx.py プロジェクト: Fnanshan/student_house
class PostInline:
    # admin写法 fields = ('title', 'desc')
    form_layout = (
        Container(
            Row("title", "desc"),
        )
    )
    extra = 1   # 控制额外多几个
    model = Post
コード例 #14
0
    def do_action(self, queryset):
        if not self.has_change_permission():
            raise PermissionDenied

        change_fields = [
            f for f in self.request.POST.getlist(BATCH_CHECKBOX_NAME)
            if f in self.batch_fields
        ]

        if change_fields and self.request.POST.get("post"):
            self.form_obj = self.get_change_form(True, change_fields)(
                data=self.request.POST, files=self.request.FILES)
            if self.form_obj.is_valid():
                self.change_models(queryset, self.form_obj.cleaned_data)
                return None
        else:
            self.form_obj = self.get_change_form(False, self.batch_fields)()

        helper = FormHelper()
        helper.form_tag = False
        helper.include_media = False
        helper.add_layout(
            Layout(
                Container(
                    Col(
                        "full",
                        Fieldset("",
                                 *self.form_obj.fields.keys(),
                                 css_class="unsort no_title"),
                        horizontal=True,
                        span=12,
                    ))))
        self.form_obj.helper = helper
        count = len(queryset)
        if count == 1:
            objects_name = force_text(self.opts.verbose_name)
        else:
            objects_name = force_text(self.opts.verbose_name_plural)

        context = self.get_context()
        context.update({
            "title": _("Batch change %s") % objects_name,
            "objects_name": objects_name,
            "form": self.form_obj,
            "queryset": queryset,
            "count": count,
            "opts": self.opts,
            "app_label": self.app_label,
            "action_checkbox_name": ACTION_CHECKBOX_NAME,
        })

        return TemplateResponse(
            self.request,
            self.batch_change_form_template
            or self.get_template_list("views/batch_change_form.html"),
            context,
        )
コード例 #15
0
ファイル: adminx.py プロジェクト: DamonMok/typeidea
class PostInline():
    # 在 分类详细页 内置关联数据() 文章编辑
    form_layout = (
        Container(
            Row("title", "desc",)
        )
    )
    extra = 1 # 控制额外多几个
    model = Post
コード例 #16
0
ファイル: batch.py プロジェクト: Alexcn/xadmin_python3
    def do_action(self, queryset):
        if not self.has_change_permission():
            raise PermissionDenied

        change_fields = [
            f for f in self.request.POST.getlist(BATCH_CHECKBOX_NAME)
            if f in self.batch_fields
        ]

        if change_fields and self.request.POST.get('post'):
            self.form_obj = self.get_change_form(True, change_fields)(
                data=self.request.POST, files=self.request.FILES)
            if self.form_obj.is_valid():
                self.change_models(queryset, self.form_obj.cleaned_data)
                return None
        else:
            self.form_obj = self.get_change_form(False, self.batch_fields)()

        helper = FormHelper()
        helper.form_tag = False
        helper.add_layout(
            Layout(
                Container(
                    Col('full',
                        Fieldset("",
                                 *list(self.form_obj.fields.keys()),
                                 css_class="unsort no_title"),
                        horizontal=True,
                        span=12))))
        self.form_obj.helper = helper
        count = len(queryset)
        if count == 1:
            objects_name = self.opts.verbose_name
        else:
            objects_name = self.opts.verbose_name_plural

        context = self.get_context()
        context.update({
            "title": _("Batch change %s") % objects_name,
            'objects_name': objects_name,
            'form': self.form_obj,
            'queryset': queryset,
            'count': count,
            "opts": self.opts,
            "app_label": self.app_label,
            'action_checkbox_name': ACTION_CHECKBOX_NAME,
        })

        return TemplateResponse(
            self.request,
            self.batch_change_form_template
            or self.get_template_list('views/batch_change_form.html'),
            context,
            current_app=self.admin_site.name)
コード例 #17
0
ファイル: batch.py プロジェクト: lipengyu/django-bootstrap
    def do_action(self, queryset):
        if not self.has_change_permission():
            raise PermissionDenied

        form_class = self.get_change_form()

        if self.request.POST.get('post'):
            self.form_obj = form_class(data=self.request.POST,
                                       files=self.request.FILES)

            return None
        else:
            self.form_obj = form_class()

        helper = FormHelper()
        helper.form_tag = False  # 默认不需要 crispy 生成 form_tag
        helper.add_layout(
            Layout(
                Container(Fieldset("",
                                   *self.form_obj.fields.keys(),
                                   css_class="unsort no_title"),
                          css_class="form-horizontal")))
        self.form_obj.helper = helper

        if len(queryset) == 1:
            objects_name = force_unicode(self.opts.verbose_name)
        else:
            objects_name = force_unicode(self.opts.verbose_name_plural)

        context = self.get_context()
        context.update({
            "title": _("Change %s") % objects_name,
            'form': self.form_obj,
            'queryset': queryset,
            "opts": self.opts,
            "app_label": self.app_label,
            'action_checkbox_name': ACTION_CHECKBOX_NAME,
        })

        return TemplateResponse(
            self.request,
            self.batch_change_form_template
            or self.get_template_list('views/batch_change_form.html'),
            context,
            current_app=self.admin_site.name)
コード例 #18
0
class PostInline:
    form_layout = (Container(Row('title', 'desc'), ), )
    extra = 1  # 控制额外多几个
    model = Post
コード例 #19
0
class PostInline:
    """ 同一个界面编辑两个model """
    form_layout = (Container(Row('title', 'summary')))
    extra = 1
    model = Post
コード例 #20
0
ファイル: adminx.py プロジェクト: yueyeKIDL/typeidea
class PostInline:
    model = Post
    extra = 1  # 可以添加几篇文章
    form_layut = (Container(Row('title', 'desc'), ))
コード例 #21
0
class PostInline:  # StackedInline
    form_layout = (Container(Row("title", "desc"), ))
    extra = 1
    model = Post
コード例 #22
0
ファイル: adminx.py プロジェクト: RainingHeart/typeidea
class PostInline(object):  # 可选择继承自 admin.StackedInline, 以获取不同的展示样式
    form_layout = (Container(Row('title', 'desc'), ))
    extra = 1  # 控制额外多几个
    model = Post
コード例 #23
0
class PostInline:  # admin.TabularInline
    """ 对于需要在一个页面内完成两个关联模型编辑编辑的需求,inline admin非常合适 """
    form_layout = (Container(Row('title', 'desc', 'owner'), ))
    extra = 2
    model = Post
コード例 #24
0
ファイル: adminx.py プロジェクト: WuYiZhen992985608/typeidea
class PostInline:
    # 文章可编辑的项目
    form_layout = (Container(Row('title', 'desc'), ))
    # 显示1行可编辑对象
    extra = 1
    model = Post
コード例 #25
0
ファイル: adminx.py プロジェクト: GITliyanfeng/blog-django
class PostInline(object):  # admin.StackedInline 只是样式不同
    """内联数据管理---分类下面直接管理相对应的文章"""
    form_layout = (Container(Row('title', 'desc')))
    extra = 0  # 控制额外多出几个
    model = Post
コード例 #26
0
ファイル: adminx.py プロジェクト: TomatoChewgum/typeidea
class PostInline:  # 可以选择继承 admin.TabularInline  admin.StackedInline
    form_layout = (Container(Row("title", "desc"), ))
    extra = 1  # 控制额外显示几个
    model = Post
コード例 #27
0
ファイル: adminx.py プロジェクト: clampist/anime_chaser
class AnimeInline:
    form_layout = (Container(Row('title', 'desc')))
    extra = 1
    model = Anime
コード例 #28
0
ファイル: adminx.py プロジェクト: MiracleWong/typeidea
class PostInLine:
    form_layout = (Container(Row('title', 'desc')))
    extra = 0  # 额外控制多少个
    model = Post
コード例 #29
0
ファイル: adminx.py プロジェクト: gaohanmeng/MyPersonal
class PostInline(admin.TabularInline):
    # fields = ('title', 'desc')
    form_layout = (Container(Row('title', 'desc'), ))
    extra = 5
    model = Post
コード例 #30
0
class PostInline:  # StackedInline 样式不同
    """例子:在分类页面直接编辑文章"""
    form_layout = [Container(Row('title', 'desc'), )]
    extra = 1  # 控制额外多几个
    model = Post