2011-03-17 10 views
3

私の管理者は、1つの大きなロードバンプ以外はうまくいきます。投稿とタグの間には数多くの関係があります。私が追加しようとすると、ここでも、問題が出てくるDjango no ForeignKey ...しかし、それはManyToManyFieldです

class Post(models.Model): 

    user=models.ForeignKey(User, unique=True) 
    title=models.CharField(max_length=80) 
    slug=models.SlugField() 
    description=models.TextField(max_length=1000, blank=True) 
    created=models.DateField(auto_now_add=True) 
    #following info is for processing purposes 
    management_phone=models.CharField(max_length=200, blank=True) 
    management_email=models.CharField(max_length=200, blank=True) 
    processing=models.BooleanField(default=False) 
    transacted=models.BooleanField(default=False) 
    manually_closed=models.BooleanField(default=False) 

    def __unicode__(self): 
     return self.title 

class Tag(models.Model): 
    title=models.CharField(max_length=100) 
    posts=models.ManyToManyField(Post, blank=True,null=True) 

    def __unicode__(self): 
     Return self.title 

:私は私の管理者でCRUDタグをすることができますが、何らかの理由で、私は、次のエラーメッセージが表示されます。ここでは

Exception at /admin/website/post/add/ 

<class 'website.models.Tag'> has no ForeignKey to <class 'website.models.Post' 

は私のモデルです事後インスタンス

私のデータベースには、関係のためにデータベーステーブル "website_tag_posts"があります。ここで何が問題なの?あなたがTag InlineとあなたのPostModelAdminを設定するよう

おかげ

+0

あなたは 'admin.py'を投稿してもらえますか? – DrMeers

答えて

9

は私にね。

ManyToManyは外部キーではないため、そのようなインラインを設定することはできません。

インラインを使用する場合は、m2mフィールドのスルーモデルをモデルとして指定します。 m2mフィールドのスルーテーブルにはForeignKeyPostテーブルが含まれています。

table tag <- table tag_post -> table post

class TagInline(admin.StackedInline): 
    model = Tag.posts.through 
関連する問題