4

我正在遍历对象列表并保存。我需要在保存后立即生成新生成的 id 或指针 id,但它是无。

这是我的代码:

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

我究竟做错了什么?

4

3 回答 3

1

问题在于:

saved_category = category.save()

它需要是:

category = category.save()

列表中原始保存的对象是包含 id 的对象。

于 2013-12-02T18:19:02.460 回答
1

他们不需要重新分配。

category.save()

当您调用 save() 方法时,对象被保存到数据库中并将 id(主键)分配给对象。 保存对象 Django 官方

在 Stackoverflow 上提出的其他相同问题和 Daniel Roseman 的正确答案

于 2019-11-29T04:19:09.820 回答
0

我认为该对象不会被保存。似乎您正在创建的对象缺少足够的数据来满足数据库约束。您可能在某处使用过 try-catch,您会看到错误。在创建对象blank=True, null=True时尝试添加或提供名称。我希望这有效...nameParentCategory

于 2013-12-02T18:27:34.343 回答