您正在开发一个支持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;
}
某些状态是空格(不只是像一个单词“已完成”)。例如:“尚未开始”。所以当我传递这个值时,我的类属性不起作用。怎么处理这个问题?在此先感谢你们
答案 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"
如果您不想/不能更改数据库中的条目,则有两种可能的解决方案。
使用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>