Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django-tables2编辑yesno参数用于所有布尔列_Python_Django_Django Tables2 - Fatal编程技术网

Python django-tables2编辑yesno参数用于所有布尔列

Python django-tables2编辑yesno参数用于所有布尔列,python,django,django-tables2,Python,Django,Django Tables2,我有一个table.py,我想在其中更改每个布尔列的真值和假值的图标。我知道它可以被BooleanColumn的yesno参数修改,但我不知道如何覆盖所有BooleanColumn的默认值。下面是tables.py的代码(aacsb、amba、equis、mba、bsc、msc和doubedegree是布尔字段): 1) 因此,您可以简单地覆盖yesno哪个默认值是“✔,✘" (只是str): 或删除文本: some_name = BooleanColumn(yesno=',') 2) 使用c

我有一个table.py,我想在其中更改每个布尔列的真值和假值的图标。我知道它可以被BooleanColumn的yesno参数修改,但我不知道如何覆盖所有BooleanColumn的默认值。下面是tables.py的代码(aacsb、amba、equis、mba、bsc、msc和doubedegree是布尔字段):

1) 因此,您可以简单地覆盖
yesno
哪个默认值是“✔,✘" (只是
str
):

或删除文本:

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

3) 指定一些额外属性到
span
(但是不要指定
!):

4) 如果出于某些原因,您希望更改默认的类设置行为(
true
false
)-您应该重写
BooleanColumn
,它的方法是
render

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)))

感谢madzohan的回答,下面是完整的代码。请注意,我使用了django-bootstrap3,以便使用引导图标:

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',
                  )
从django_表2导入布尔列、列、表
从django.utils.safestring导入标记_safe
从django_tables 2.utils导入属性指令
来自manager.models导入合作伙伴
类BootstrapBooleanColumn(BooleanColumn):
定义初始化(self,null=False,**kwargs):
如果为空:
kwargs[“空值”]=()
super(布尔列,self)。\uuuuu init\uuuuuu(**kwargs)
def渲染(自身,值):
值=布尔(值)
html=“”
class_name=“glyphicon glyphicon remove”
如果值:
class_name=“glyphicon glyphicon ok”
attrs={'class':class_name}
update(self.attrs.get('span',{}))
返回mark_safe(html%(AttributeDict(attrs).as_html())
类伙伴表(表):
国家/地区名称=列(访问器='country.name',详细名称='country')
region\u name=列(访问器='country.region.name',verbose\u name='region')
aacsb=bootstrapbooleaancolumn()
amba=bootstrapbooleaancolumn()
equis=bootstrapbooleaancolumn()
mba=bootstrapbooleaancolumn()
bsc=bootstrapbooleaancolumn()
msc=bootstrapbooleaancolumn()
doubledegree=bootstrapbooleaancolumn()
类元:
型号=合作伙伴
字段=('name',
“国家名称”,
“地区名称”,
"网站",,
“aacsb”,
“安巴”,
“马”,
“mba”,
“理学士”,
“理学硕士”,
"双度",,
)

是的,你是对的,
(''.split('',')如果是instance('',str)或者tuple('')=['']
那么
[''][int(not True)]=='
但是
['][int(not False)]==索引器
如果你不使用它,为什么要保留
是呢?只要重写
\u init code>方法并删除它就行了
span.true {
    background: url(../img/true.gif) top center no-repeat;
}

span.false {
    background: url(../img/false.gif) top center no-repeat;
}
some_name = BooleanColumn(attrs={'span': {'style': 'color:blue'}})
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)))
some_name = CustomBooleanColumn(yesno=',')
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',
                  )