Esempio n. 1
0
    def get_field_style(self, db_field, style, **kwargs):
        """
        根据 Field Style 返回 Form Field 属性。扩展插件可以过滤该方法,提供各种不同的 Style

        :param db_field: Model 的 DB Field

        :param style: 配置的 Field Style,该值来自于属性 :attr:`style_fields`
        """
        if style in ('radio', 'radio-inline') and (
                db_field.choices or isinstance(db_field, models.ForeignKey)):
            # fk 字段生成 radio 表单控件
            attrs = {
                'widget':
                widgets.AdminRadioSelect(
                    attrs={
                        'inline': 'inline' if style == 'radio-inline' else ''
                    })
            }
            if db_field.choices:
                attrs['choices'] = db_field.get_choices(
                    include_blank=db_field.blank,
                    blank_choice=[('', _('Null'))])
            return attrs

        if style in ('checkbox', 'checkbox-inline') and isinstance(
                db_field, models.ManyToManyField):
            return {
                'widget':
                widgets.AdminCheckboxSelect(
                    attrs={'inline': style == 'checkbox-inline'}),
                'help_text':
                None
            }
Esempio n. 2
0
    def get_field_style(self, db_field, style, **kwargs):
        if style in ('radio', 'radio-inline') and (
                db_field.choices or isinstance(db_field, models.ForeignKey)):
            attrs = {
                'widget':
                widgets.AdminRadioSelect(
                    attrs={
                        'inline': 'inline' if style == 'radio-inline' else ''
                    })
            }
            if db_field.choices:
                attrs['choices'] = db_field.get_choices(
                    include_blank=db_field.blank,
                    blank_choice=[('', _('Null'))])
            return attrs

        if style in ('checkbox', 'checkbox-inline') and isinstance(
                db_field, models.ManyToManyField):
            return {
                'widget':
                widgets.AdminCheckboxSelect(
                    attrs={'inline': style == 'checkbox-inline'}),
                'help_text':
                None
            }
Esempio n. 3
0
    def get_field_style(self, db_field, style, **kwargs):
        if style in ("radio", "radio-inline") and (
            db_field.choices or isinstance(db_field, models.ForeignKey)
        ):
            attrs = {
                "widget": widgets.AdminRadioSelect(
                    attrs={"inline": "inline" if style == "radio-inline" else ""}
                )
            }
            if db_field.choices:
                attrs["choices"] = db_field.get_choices(
                    include_blank=db_field.blank, blank_choice=[("", _("Null"))]
                )
            return attrs

        if style in ("checkbox", "checkbox-inline") and isinstance(
            db_field, models.ManyToManyField
        ):
            return {
                "widget": widgets.AdminCheckboxSelect(
                    attrs={"inline": style == "checkbox-inline"}
                ),
                "help_text": None,
            }