Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django的ManyToManyField IntegrityError-为什么?_Python_Mysql_Django_Foreign Keys_Many To Many - Fatal编程技术网

Python Django的ManyToManyField IntegrityError-为什么?

Python Django的ManyToManyField IntegrityError-为什么?,python,mysql,django,foreign-keys,many-to-many,Python,Mysql,Django,Foreign Keys,Many To Many,我有新闻和页面模型,新闻有两个引用页面的字段: 问题是,如果我试图保存来自django admin的新闻,并且选择了一些页面用于添加章节,我会得到 IntegrityError 1452'无法添加或更新子行:外键 约束失效 site.news\u news\u添加章节, 约束新闻\u id\u参考\u id\u 479506ad 外键新闻id引用 新闻\新闻id' 出什么问题了?对于我来说,Django 1.2、sqlite和mysql都可以正常工作。我认为你的db方案是错误的。在一个新的数据库

我有新闻和页面模型,新闻有两个引用页面的字段:

问题是,如果我试图保存来自django admin的新闻,并且选择了一些页面用于添加章节,我会得到

IntegrityError 1452'无法添加或更新子行:外键 约束失效 site.news\u news\u添加章节, 约束新闻\u id\u参考\u id\u 479506ad 外键新闻id引用 新闻\新闻id'


出什么问题了?

对于我来说,Django 1.2、sqlite和mysql都可以正常工作。我认为你的db方案是错误的。在一个新的数据库上尝试它,并检查它是否工作

检查您的代码-记住类型是python内置的。你是不是在什么地方用了type而不是self.type

我使用的代码是:

# models.py
class Page(models.Model):
    name = models.CharField(max_length=128)
    type = models.CharField(max_length=128, default="news")
    allow_add_news = models.BooleanField(default=True)

class News(models.Model):
    name = models.CharField(max_length=128)
    chapter   = models.ForeignKey(Page, 
     verbose_name='Main chapter', 
     limit_choices_to={'type__in':['news','speech']}, 
     related_name='news'
    )

    add_chapters = models.ManyToManyField(Page, blank=True, null=True, 
            verbose_name='Show also on', 
            limit_choices_to={'allow_add_news':True},
            related_name="added_news"
    )
# models.py
class Page(models.Model):
    name = models.CharField(max_length=128)
    type = models.CharField(max_length=128, default="news")
    allow_add_news = models.BooleanField(default=True)

class News(models.Model):
    name = models.CharField(max_length=128)
    chapter   = models.ForeignKey(Page, 
     verbose_name='Main chapter', 
     limit_choices_to={'type__in':['news','speech']}, 
     related_name='news'
    )

    add_chapters = models.ManyToManyField(Page, blank=True, null=True, 
            verbose_name='Show also on', 
            limit_choices_to={'allow_add_news':True},
            related_name="added_news"
    )