【问题标题】:Django loop through all items to save, but it only saves one recordDjango循环遍历所有要保存的项目,但它只保存一条记录
【发布时间】:2012-09-24 19:35:10
【问题描述】:

我有下一个模型:

class People(models.Model):
    name = models.CharField(max_length=100)
    lastname = models.CharField(max_length=100)

class Salary(models.Model):
    id_of_people=models.ForeignKey(People)
    salary = models.IntegerField(required=False)

在views.py中

-当我尝试这个时:

    for each in People.objects.all()[:3]:
            Salary().id_of_people_id=each.id
            Salary().save()

它只保存3个Th id,而不是从1到3。所以,它只保存一次。但是,我想遍历所有 3 条记录,为什么会发生这种情况?如何将所有 People 表 id 添加到 Salary 表?

【问题讨论】:

  • 我不知道你想做什么。 Salary 是一个模型,而不是一个实例。在保存之前,您必须实际获取或创建 Salary 实例。
  • 对不起,我忘了说。我已经编辑过了,请考虑这个编辑后的版本...
  • 为什么for each 行缩进了?
  • 因为,我会遍历我的 People 表中的所有项目

标签: python django


【解决方案1】:

您正在创建一个 Salary 对象并将其更新 3 次。您需要创建三个单独的对象。

for each in People.objects.all()[:3]:
    item_salary=Salary()
    item_salary.id_of_people_id=each.id
    item_salary.save()

【讨论】:

  • @themanatuf 如果我们想在模型中使用 def save() 做同样的事情,我们需要在保存函数中保持循环怎么办?
  • 只需按照@themanatuf 提到的方法进行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-23
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多