我有一个MultipleChoiceField表单字段(与模型CharField相关联),它显示在数据库like this中。它似乎已在数据库中转换为字符串,因为当我尝试在HTML中使用'for property in property_type'语句显示它时,它会显示like this。我希望它显示like this
所以我必须编写一些代码来解决这个问题。我的伪代码看起来像:
for record in property_type:
split record at comma
for i in record:
if record[i] is not a letter or number:
remove record[i]
现在我的问题是,我在哪里编写这段代码?我是在views.py或HTML文件中写的吗?我尝试在视图中进行,但我不知道如何选择单个数据库记录。我尝试在HTML中进行,但我受到模板标签的限制。
以下是我的代码的缩短版本:
models.py:
property_type = models.CharField(max_length=50, help_text="You can select more than 1 option")
forms.py:
property_type = forms.MultipleChoiceField(widget=forms.SelectMultiple, choices=BuyerListing.PROPERTY_TYPE)
HTML:
{% for property in listing.property_type %}
<p>Property type: {{ property }}</p>
{% endfor %}
编辑:
感谢@ytsejam和@Daniel Roseman的工作。使用ytsejam的代码,结果将显示如下:
['1' '2']
我在ytsejam的代码中添加了一个基本的正则表达式来删除括号和引号:
def split_properties(self):
a = self.property_type
a = re.sub(r'[\]\[\']', '', a)
a = a.split(',')
return a
现在列表将显示如下,这在HTML中非常容易操作。
1 2
答案 0 :(得分:0)
在models.py
def split_properties(self):
return self.properties.split(',')
并在您的模板中使用
{% for property in className.split_properties %} {{ property }} {% endfor %}