【发布时间】:2011-02-16 20:45:34
【问题描述】:
我在模型中有以下表格,具有递归结构(一个页面可以有子页面)
class DynamicPage(models.Model):
name = models.CharField("Titre",max_length=200)
parent = models.ForeignKey('self',null=True,blank=True)
我想创建另一个与该表具有 ManyToMany 关系的表。
class UserMessage(models.Model):
name = models.CharField("Nom", max_length=100)
page = models.ManyToManyField(DynamicPage)
一个UserMessage可以显示在多个页面上,一个页面可以显示多个消息。
当我添加新的 UserMessage 时,由于以下外键约束而出现错误。
ALTER TABLE `website_dynamicpage` ADD CONSTRAINT `parent_id_refs_id_29c58e1b` FOREIGN KEY (`parent_id`) REFERENCES `website_dynamicpage` (`id`);
我认为我的问题原因是约束是在 DynamicPage 的父字段上设置的,而不是在它的 id 上。
顶级 DynamicPages 没有父页面,但它们可以显示 UserMessage。
所以,我希望与页面 id 而非页面父级建立 ManyToMany 关系。
我没有在 Django 文档中看到如何说 ManyToMay 位于 UserMessage id 和 DynamicPage id 之间,而不是 DynamicPage 父级之间。
如何做到这一点?有可能吗?
手动重新创建 SQL 约束是否可行?
提前致谢
【问题讨论】:
-
重申您的问题,我很难理解它;)您的意图是创建关系
UserMessage多对多DynamicPage,对吗?您显示的 SQL 约束与ForeignKey相关,所以我不明白。 -
感谢您的回答。我试图更好地解释。有时用外语解释事情并不容易:)
标签: python django django-models many-to-many