使用空格处理css类名

时间:2016-02-16 08:58:17

标签: python html css django django-templates

您正在开发一个支持Django的项目。以下是我的html文件(模板)

中的代码
{% for l in items  %}

                                <td style="text-align: center"
                                    id="{{m.id}}_{{m.set}}">
                                </td>

{% endfor %}

和一个JS脚本:

<script>

$(document).ready(function() {
    {% for a in all_results %}
            $('#{{a.id}}_{{a.set}}').html('{{a.id}}');
            $('#{{a.id}}_{{a.set}}').addClass('{{ a.size__status }}');
    {% endfor %}
});
</script>

表示td的类将根据我的数据库中的状态列进行更改。

我的css:

.completed{
    background-color: #4dff4d;
}

某些状态是空格(不只是像一个单词“已完成”)。例如:“尚未开始”。所以当我传递这个值时,我的类属性不起作用。怎么处理这个问题?在此先感谢你们

2 个答案:

答案 0 :(得分:4)

根本不应该在状态中使用空格。 更好的想法是使用django-model-utils中的Choices 然后,您可以在模型中定义状态,如下所示:

STATUS = Choices(
    ('completed', 'completed'),
    ('not_yet_started', 'Not yet started')
)
status =  models.CharField(choices=STATUS, max_length=20)

元组的第一个值存储在数据库中。您可以使用第二个显示。您可以像这样访问它

obj.status # gives "not_yet_started"
obj.get_status_display # gives "Not yet stared"   

UPDATE:

如果您不想/不能更改数据库中的条目,则有两种可能的解决方案。

  • 使用Javascript:

    '{{a.status}}'.replace(' ', '_')

  • django模型属性:

    def status_name(self): return self.status.replace(' ', '_')

答案 1 :(得分:2)

如果您不想更改状态名称,请为您的模型添加一个属性,为您生成正确的类名称:

@property
def class_name(self):
    return self.size.status.replace(" ", "_")

你可以像这样使用它:

<script>
$(document).ready(function() {
    {% for a in all_results %}
            $('#{{a.id}}_{{a.set}}').html('{{a.id}}');
            $('#{{a.id}}_{{a.set}}').addClass('{{ a.class_name }}');
    {% endfor %}
});
</script>