2011-06-19 4 views
0

私はニュースページモデルを持っている、とニュースは、2つのフィールドがページに参照していますDjangoのManyToManyField IntegrityError - なぜですか?

chapter = models.ForeignKey('pages.Page', 
    verbose_name='Main chapter', 
    limit_choices_to={'type__in':['news','speech']}, 
    related_name='news' 
) 

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

問題は、私はDjangoの管理者からニュースを保存しようとしている場合ということです(一部のページはadd_chaptersに選択されています) - 私は

IntegrityError(1452、 '子行を追加または更新できません:外部キー の制約が失敗します。 (site)。 news_news_add_chapters、間違って何 CONSTRAINT news_id_refs_id_479506ad FOREIGN KEY(news_idnews_newsid)を参照) ')

答えて

0

これはDjango 1.2とsqliteとmysqlでうまくいきます。あなたのdbスキームが間違っていると思います。新鮮なデータベースでそれを試して、それが動作しているかどうかを確認してください。

(コードを確認してください - typeはpython built_inです。self.typeの代わりに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" 
    ) 
関連する問題