Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
Django-MultipleChiiceField显示为字符串而不是列表_Django_Python 3.x - Fatal编程技术网

Django-MultipleChiiceField显示为字符串而不是列表

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:

我有一个MultipleChoiceField表单字段(与models CharField关联),它显示在数据库中。它似乎已转换为数据库中的字符串,因为当我尝试在HTML中使用“for property in property_type”语句显示它时,它会显示出来。我想把它展示出来

所以我必须写一些代码来解决这个问题。我的伪代码将类似于:

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(',')
即可获取列表