Django:如何更新以前创建的数据库条目?

时间:2014-06-18 16:02:26

标签: python database django

我有一堆先前创建的我创建的模型类的数据库条目,称为方程式。我创建了一个新类型的模型,EquationGroup,我希望能够将数据库中的现有方程链接到新创建的EquationGroups。我该怎么做?

更新: 我忘了提到我在Equation to EquationGroup中有一个ForeignKey关系。 这是我的models.py的简短版本

class EquationGroup(models.Model):

    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name

class Equation(models.Model):

    name = models.CharField(max_length=50, null=False, blank=False)
    group = models.ForeignKey(EquationGroup)

3 个答案:

答案 0 :(得分:1)

您可以创建一个遍历所有方程式的脚本,并将它们附加到方程组。使用Equations.objects.all()可以获得所有方程对象的可迭代。 然后,您可以在for循环中进行操作,并将每个分配给指定的方程组。

示例:

for equation in Using Equations.objects.all():
    equation.equationGroup = some_group  #based on however you specify what goes in a group.
    equation.save()

答案 1 :(得分:0)

你想做出关联Equation< - > EquationGroup?如果是这样,您应该添加OneToOne关系字段。 Look here例如。

还有许多其他方法可以添加关系,例如ManyToMany和ForeighKey。

您需要关联实例吗?这样,你应该有数据来查找相关数据并将其保存为OneToOne / ForeignKey。

答案 2 :(得分:0)

您打算如何使用equation模型的新更改来更新数据库?如果您使用的是django 1.7+,则可以使用内置的migrations。如果不是,您需要查看South之类的内容。第三,您可以手动更改数据库。

无论如何,我提出迁移的原因是因为你无法添加一个空的外键字段。将字段添加到数据库表时,您需要指定一个默认的FK值,您可以使用@ user3154952建议返回并更新。

根据您使用的数据库,您可能可以暂时删除外键约束检查。允许您通过允许null将新字段添加到表中而不使用虚拟值。