在django中保存后,对象的id为none

时间:2013-11-30 19:16:17

标签: django django-models django-orm django-inheritance multi-table-inheritance

我循环浏览对象列表并保存。我需要在保存后立即生成新的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

我做错了什么?

3 个答案:

答案 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

相关问题