我循环浏览对象列表并保存。我需要在保存后立即生成新的id或指针ID,但它是None。
这是我的代码:
for category in category_list:
saved_category = category.save()
print saved_category.parentCategory_ptr_id
print saved_category.id
这会在例程运行后保存我的对象,但同样,不会在此行给我id。
这是我的模特:
class ParentCategory(models.Model):
name = models.CharField(max_length=255)
class Category(ParentCategory):
description = models.CharField(max_length=255)
类别列表的创建方式如下:
category_list = []
for row in value_list:
category = Category(description=row.description)
category_list.append(category)
return category_list
我做错了什么?
答案 0 :(得分:0)
问题在于:
saved_category = category.save()
需要:
category = category.save()
列表中的原始保存对象是包含id的对象。
答案 1 :(得分:0)
我不认为该对象会被保存。似乎您正在创建的对象缺少足够的数据来满足数据库约束。您可能在某处使用过try-catch,您会看到错误。尝试在blank=True, null=True
中将name
添加到ParentCategory
,或在创建对象时提供名称。我希望这有效......
答案 2 :(得分:0)
他们不需要重新分配。
category.save()
当调用save()方法时,该对象将保存到数据库中,并为该对象分配ID(主键)。 Saving Objects Django Official
Other same question asked on Stackoverflow and correct answer by Daniel Roseman