Skip to main content
 首页 » 编程设计

python之将对象属性值添加到数组 Django

2025年04月02日32kerrycode

我是 Django 的新手,这是我使用它的第一个项目。我遇到了一个我不明白的问题,并且(也许我没有使用正确的搜索词)我在搜索解决方案时没有找到任何相关结果。

我试图在我的模型的“主题”字段中获取一组不同的条目。当我得到以下结果时,我在 shell 中玩耍,试图弄清楚这一点。

这是我在 shell 中输入的内容:

>>> from pomodoro.models import Chunk, Result 
>>> Chunk.objects.all() 
<QuerySet [<Chunk: Onboard State Estimation>, <Chunk: Newton's 2nd Law of Motion>, <Chunk: IF>]> 
>>> a = [] 
>>> for q in Chunk.objects.all(): a += q.topic 
... 
>>> a 
['R', 'o', 'b', 'o', 't', 'i', 'c', 's', 'M', 'e', 'c', 'h', 'a', 'n', 'i', 'c', 's', 'L', 'o', 'g', 'i', 'c'] 
>>> ose = Chunk.objects.get(pk=1) 
>>> ose.topic 
'Robotics' 

我不明白为什么我最终得到的是一组单独的字母而不是一组“主题”字符串。有人可以解释为什么会这样吗?

我也知道有很多更好的方法来做我想做的事情,但作为初学者,我还没有正确掌握 Django。

请您参考如下方法:

尝试使用 append 方法代替 a += q.topic

a.append(q.topic) 

或者:

a += [q.topic] 

原因是字符串对象是可迭代的,python 将迭代以将项目附加到您的列表中。所以遍历 'Robotics'给你['R', 'o', 'b', 'o', 't', 'i', 'c', 's'] .

因此,如果您指定单个列表值 [q.topic] python 将附加 q.topic 的值对于 for 中的每次迭代循环。