django模型继承 - 多表 - 手动插入

时间:2011-11-17 11:35:52

标签: django inheritance model insertion

我刚刚重新设计了我的数据库的一部分以使用多表继承,现在事情变得容易多了!

我有一个问题,我试图在我的表中手动插入数千行,现在我无法弄清楚如何做到这一点。

例如为: 之前:

class personal(models.Model):
    who = models.CharField...
    stamp = models.DateTime...
    title = models.CharField ...
    descr = models.CharField ...

并在python shell中:

for i in range(1000):
    t=datetime.now()
    e=timedelta(minutes=i)
    entry = personal(who='xyz', stamp=t+e, title='title '+str(i), descr='description for '+str(i)
    entry.save()

后:

class common(models.Model):
    who ...
    stamp ...

class personal(common):
    title ...
    descr ...

并且在python shell中如果我做同上面的事情就说个人没有名为who / stamp的列

我的问题:我怎样才能在'for'上面调整以在我的新数据库中插入多行?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可能需要抽象模型继承:

class common(models.Model):
    who ...
    stamp ...

    class Meta:
        abstract = True

class personal(common):
    title ...
    descr ...

然后上面的代码应该可以工作。

编辑:

对于非抽象继承,插入代码应该是这样的:

for i in range(1000):
    t=datetime.now()
    e=timedelta(minutes=i)
    base = common.objects.create(who='xzy', stamp=t+e)
    entry = personal.objects.create(common_ptr=base, title='title '+str(i), descr='description for '+str(i)