2011-03-17 5 views
3

내 관리자가 하나의 큰로드 덤프 이외에 잘 작동합니다. 나는 포스트와 태그 사이에 많은 관계를 만들었다. 내가 추가 할 때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 InlinePostModelAdmin을 설정처럼

감사

+0

당신은 당신의'admin.py'를 게시 할 수 있을까요? – DrMeers

답변

9

나에게 소리.

ManyToMany는 외래 키가 아니므로 Inline을 이와 같이 설정할 수 없습니다.

인라인을 원하면 m2m 필드의 통과 모델을 모델로 지정하십시오. m2m 필드의 through 테이블에는 ForeignKey에서 Post 테이블까지가 포함됩니다.

table tag <- table tag_post -> table post

class TagInline(admin.StackedInline): 
    model = Tag.posts.through 
관련 문제