【发布时间】:2020-08-13 06:46:44
【问题描述】:
当某些类对象将在循环过程中添加到列表中时,我遇到了问题。
假设我有一个包含许多记录的数据库[ 'kid' , 'parent' , 'grandfather' ]。
我有课:
class Person:
name
children
grandchildren
我创建了一个循环(我知道这是个坏主意,我可以简单地使用查询)并查找每个grandfather。类的实例存储每个grandfather 的数据,并在最后附加到一个名为Persons_List 的列表中。这是代码:
p = Person()
Persons_List = list()
pr = "" #parents
gr = "" #grandfather
for i in my_database.objects.all().order_by('grandfather'):
if gr != i.grandfather:
gr = i.grandfather
pr = i.parent
if p.name !="":
Persons_List.append(p) # [:] raises Error and deepcopy not working
p.name = ""
p.parents.clear()
p.grandchildren.clear()
p.name = i.grandfather
p.children.append(i.parent)
p.grandchildren.append(i.kid)
else:
if pr != i.parent:
pr = i.parent
try:
p.children.remove(pr)
except: None
p.children.append(pr)
p.grandchildren.append(i.kid)
Persons_List.append(p) #Adds The Last p To The List
问题是最终存储在列表中的数据是错误的和混乱的。名字是最后一个p.name。 children 和 grandchildren 是错误的。
【问题讨论】:
标签: python django list class model