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 }
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 }
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, }