Django no ForeignKey ... Но это поле ManyToManyField - PullRequest
3 голосов
/ 18 марта 2011

Мой админ работает отлично, кроме одного большого Roadbump.Я создал множество отношений между постами и тегами.Я могу пометить теги в моем администраторе, но по какой-то причине я получаю следующее сообщение об ошибке:

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 Ответ

9 голосов
/ 18 марта 2011

Звучит так, будто вы настроили Post ModelAdmin с Tag Inline.

ManyToMany не является внешним ключом, поэтому вы не можете настроить Inline таким образом.

Если вы хотите встроить, укажите вместо модели сквозную модель для вашего поля m2m. Сквозная таблица для поля m2m содержит от ForeignKey до Post таблицы.

table tag <- table tag_post -> table post

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