我有一堆先前创建的我创建的模型类的数据库条目,称为方程式。我创建了一个新类型的模型,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)
答案 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将新字段添加到表中而不使用虚拟值。