django,创建两个相关的模型实例

时间:2013-11-01 09:05:36

标签: database django constraints

我有Thread和Post模型。

帖子有一个foreignKey to Thread(帖子有很多帖子)
Thread有一个OneToOneKey to Post(线程有一个特殊帖子)

在Post表单提交后,我创建了Thread和Post对象。

t = Thread.objects.create()
p = Post.objects.create(thread=t)

t.special_post = p
t.save()

有没有办法在django的数据库级别强制执行约束(线程应该有一个special_post,post应该有一个线程)?

1 个答案:

答案 0 :(得分:0)

一种可能的方法是使用django模型类的multi-table inheritance。它看起来像普通的python类继承,但它自动建立ThreadPost之间的一对一关系:< / p>

class Thread(models.Model):
    ...

class Post(Thread):
    ...

更改后,您可能只需要使用Post模型进行操作,您可以通过post_instance.thread访问线程。