首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表2编辑所有BooleanColumn的yesno参数

表2编辑所有BooleanColumn的yesno参数
EN

Stack Overflow用户
提问于 2014-11-15 10:56:29
回答 2查看 1.7K关注 0票数 3

我有一个table.py,在这里我想要更改每个BooleanColumn的真值和假值的图标。我知道BooleanColumn的yesno参数可以修改它,但我不知道如何覆盖所有BooleanColumns的缺省值。这是tables.py的代码(aacsb、amba、equis、mba、bsc、msc和doubedegree is BooleanFields):

代码语言:javascript
复制
from django_tables2 import Column, Table
from manager.models import Partner


class PartnerTable(Table):

    country_name = Column(accessor='country.name', verbose_name='Country')
    region_name = Column(accessor='country.region.name', verbose_name='Region')

    class Meta:
        model = Partner
        fields = ('name',
                  'country_name',
                  'region_name',
                  'website',
                  'aacsb',
                  'amba',
                  'equis',
                  'mba',
                  'bsc',
                  'msc',
                  'doubledegree',
                  )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-15 12:28:18

1)因此,您可以简单地重写默认值为“yesno”的str(它只是str):

代码语言:javascript
复制
some_name = BooleanColumn(yesno='1,2')

或删除文本:

代码语言:javascript
复制
some_name = BooleanColumn(yesno=',')

2)使用css,您可以指定自定义映像(不要忘记设置yesno=','):

代码语言:javascript
复制
span.true {
    background: url(../img/true.gif) top center no-repeat;
}

span.false {
    background: url(../img/false.gif) top center no-repeat;
}

3)为span指定一些额外的吸引(但指定class !):

代码语言:javascript
复制
some_name = BooleanColumn(attrs={'span': {'style': 'color:blue'}})

4)如果出于某些原因需要更改默认类设置行为(truefalse),则应重写BooleanColumn及其方法render

代码语言:javascript
复制
from django.utils.html import escape
from django.utils.safestring import mark_safe
from django_tables2.utils import AttributeDict


class CustomBooleanColumn(BooleanColumn):
    def render(self, value):
        value = bool(value)
        text = self.yesno[int(not value)]
        html = '<span %s>%s</span>'

        class_name = 'some_class_false'
        if value:
            class_name = 'some_class_true'
        attrs = {'class': 'class_name'}

        attrs.update(self.attrs.get('span', {}))

        return mark_safe(html % (AttributeDict(attrs).as_html(), escape(text)))

并覆盖您的字段

代码语言:javascript
复制
some_name = CustomBooleanColumn(yesno=',')
票数 5
EN

Stack Overflow用户

发布于 2014-11-16 10:40:57

这是完整的代码,感谢马佐汉的回答。注意,我使用了django-bootstrap3,这样我就可以使用引导图标:

代码语言:javascript
复制
from django_tables2 import BooleanColumn, Column, Table
from django.utils.safestring import mark_safe
from django_tables2.utils import AttributeDict
from manager.models import Partner


class BootstrapBooleanColumn(BooleanColumn):
    def __init__(self, null=False, **kwargs):
        if null:
            kwargs["empty_values"] = ()
        super(BooleanColumn, self).__init__(**kwargs)

    def render(self, value):
        value = bool(value)
        html = "<span %s></span>"

        class_name = "glyphicon glyphicon-remove"
        if value:
            class_name = "glyphicon glyphicon-ok"
        attrs = {'class': class_name}

        attrs.update(self.attrs.get('span', {}))

        return mark_safe(html % (AttributeDict(attrs).as_html()))


class PartnerTable(Table):
    country_name = Column(accessor='country.name', verbose_name='Country')
    region_name = Column(accessor='country.region.name', verbose_name='Region')
    aacsb = BootstrapBooleanColumn()
    amba = BootstrapBooleanColumn()
    equis = BootstrapBooleanColumn()
    mba = BootstrapBooleanColumn()
    bsc = BootstrapBooleanColumn()
    msc = BootstrapBooleanColumn()
    doubledegree = BootstrapBooleanColumn()

    class Meta:
        model = Partner
        fields = ('name',
                  'country_name',
                  'region_name',
                  'website',
                  'aacsb',
                  'amba',
                  'equis',
                  'mba',
                  'bsc',
                  'msc',
                  'doubledegree',
                  )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26945064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档