Django-MultipleChiiceField显示为字符串而不是列表
我有一个MultipleChoiceField表单字段(与models CharField关联),它显示在数据库中。它似乎已转换为数据库中的字符串,因为当我尝试在HTML中使用“for property in property_type”语句显示它时,它会显示出来。我想把它展示出来 所以我必须写一些代码来解决这个问题。我的伪代码将类似于:Django-MultipleChiiceField显示为字符串而不是列表,django,python-3.x,Django,Python 3.x,我有一个MultipleChoiceField表单字段(与models CharField关联),它显示在数据库中。它似乎已转换为数据库中的字符串,因为当我尝试在HTML中使用“for property in property_type”语句显示它时,它会显示出来。我想把它展示出来 所以我必须写一些代码来解决这个问题。我的伪代码将类似于: for record in property_type: split record at comma for i in record:
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:
我在ytsejam的代码中添加了一个基本正则表达式,以删除括号和引号:
def split_properties(self):
a = self.property_type
a = re.sub(r'[\]\[\']', '', a)
a = a.split(',')
return a
现在列表将显示如下,这在HTML中非常容易操作
1 2
在您的
models.py中
def split_properties(self):
return self.properties.split(',')
在模板中使用
{% for property in className.split_properties %} {{ property }} {% endfor %}
在您的models.py中
def split_properties(self):
return self.properties.split(',')
在模板中使用
{% for property in className.split_properties %} {{ property }} {% endfor %}
您应该首先修复数据的存储方式。@DanielRoseman抱歉,我在存储数据的方式上哪里犯了错误?该字段似乎以列表的形式存储在数据库中。例如,你好,再见。但是,当我尝试在HTML中使用for循环显示列表时,它一次显示一个数字,这意味着它实际上是一个字符串而不是列表。如何在将值显示在HTML上之前将其转换为列表?正如我所说的,您不应该通过在列表上直接调用str
来保存它,而是通过执行,'。join(value)
;现在,您只需调用value.split(',')
即可获取列表。您应该首先修复数据的存储方式。@DanielRoseman抱歉,我在存储数据的方式上哪里出错了?该字段似乎以列表的形式存储在数据库中。例如,你好,再见。但是,当我尝试在HTML中使用for循环显示列表时,它一次显示一个数字,这意味着它实际上是一个字符串而不是列表。如何在将值显示在HTML上之前将其转换为列表?正如我所说的,您不应该通过在列表上直接调用str
来保存它,而是通过执行,'。join(value)
;现在您只需调用value.split(',')
即可获取列表