我在模型中有一个带有递归结构的表(页面可以有子页面)
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约束可能的解决方案吗?
提前致谢
答案 0 :(得分:0)
(假设我正确理解问题;))
试试这个:
class DynamicPage(models.Model):
#...
other = models.ManyToManyField("self")
使用可选的symmetrical
关键字参数(默认为True
)。
http://docs.djangoproject.com/en/dev/ref/models/fields/#manytomanyfield