Django没有ForeignKey ......但它是一个ManyToManyField

时间:2011-03-17 21:46:59

标签: django django-models django-admin

我的管理员工作得很好,而不是一个大的路障。我在帖子和标签之间建立了许多关系。我可以在我的管理员中使用CRUD标签,但出于某种原因,我收到以下错误消息:

Exception at /admin/website/post/add/

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

以下是我的模特:

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

同样,只有在我尝试添加帖子实例

时才会出现问题

我的数据库中有一个关系的数据库表“website_tag_posts”。这有什么问题?

由于

1 个答案:

答案 0 :(得分:9)

听起来像是你设置了Post ModelAdmin Tag Inline

ManyToMany不是外键,因此您无法像这样设置内联。

如果需要内联,请将m2m字段的直通模型指定为模型。 m2m字段的直通表包含ForeignKey表格的Post

table tag <- table tag_post -> table post

class TagInline(admin.StackedInline):
     model = Tag.posts.through