Что означает эта ошибка: Пользователь модели имеет два определяемых вручную отношения m2m - PullRequest
0 голосов
/ 27 января 2010

Я сталкиваюсь с этой ошибкой при попытке синхронизировать:
auth.user: пользователь модели имеет два определяемых вручную отношения m2m через модель FavoriteQuestion, что недопустимо. Пожалуйста, рассмотрите возможность использования дополнительного поля в своей промежуточной модели.

Я действительно не понимаю, что это значит, потому что я вижу только 1 отношение модель-модель в модели FavoriteQuestion.

class FavoriteQuestion(models.Model):
    """A favorite Question of a User."""
    question      = models.ForeignKey(Question)
    user          = models.ForeignKey(User, related_name='user_favorite_questions')
    added_at = models.DateTimeField(default=datetime.datetime.now)
    class Meta:
        db_table = u'favorite_question'
    def __unicode__(self):
        return '[%s] favorited at %s' %(self.user, self.added_at)

Я не уверен, если это важно, но это также в файле models.py.

User.add_to_class('favorite_questions',
              models.ManyToManyField(Question, through=FavoriteQuestion,
                                     related_name='favorited_by'))

правка добавлена ​​Модель вопроса

Джанго 1.1.1

class Question(models.Model):
    title    = models.CharField(max_length=300)
    author   = models.ForeignKey(User, related_name='questions')
    added_at = models.DateTimeField(default=datetime.datetime.now)
    tags     = models.ManyToManyField(Tag, related_name='questions')
    # Status
    wiki            = models.BooleanField(default=False)
    wikified_at     = models.DateTimeField(null=True, blank=True)
    answer_accepted = models.BooleanField(default=False)
    closed          = models.BooleanField(default=False)
    closed_by       = models.ForeignKey(User, null=True, blank=True, related_name='closed_questions')
    closed_at       = models.DateTimeField(null=True, blank=True)
    close_reason    = models.SmallIntegerField(choices=CLOSE_REASONS, null=True, blank=True)
    deleted         = models.BooleanField(default=False)
    deleted_at      = models.DateTimeField(null=True, blank=True)
    deleted_by      = models.ForeignKey(User, null=True, blank=True, related_name='deleted_questions')
    locked          = models.BooleanField(default=False)
    locked_by       = models.ForeignKey(User, null=True, blank=True, related_name='locked_questions')
    locked_at       = models.DateTimeField(null=True, blank=True)
    # Denormalised data
    score                = models.IntegerField(default=0)
    vote_up_count        = models.IntegerField(default=0)
    vote_down_count      = models.IntegerField(default=0)
    answer_count         = models.PositiveIntegerField(default=0)
    comment_count        = models.PositiveIntegerField(default=0)
    view_count           = models.PositiveIntegerField(default=0)
    offensive_flag_count = models.SmallIntegerField(default=0)
    favourite_count      = models.PositiveIntegerField(default=0)
    last_edited_at       = models.DateTimeField(null=True, blank=True)
    last_edited_by       = models.ForeignKey(User, null=True, blank=True, related_name='last_edited_questions')
    last_activity_at     = models.DateTimeField(default=datetime.datetime.now)
    last_activity_by     = models.ForeignKey(User, related_name='last_active_in_questions')
    tagnames             = models.CharField(max_length=125)
    summary              = models.CharField(max_length=180)
    html                 = models.TextField()
    comments             = generic.GenericRelation(Comment)
    votes                = generic.GenericRelation(Vote)
    flagged_items        = generic.GenericRelation(FlaggedItem)
    email_feeds          = generic.GenericRelation(EmailFeed)

    objects = QuestionManager()

Ответы [ 2 ]

0 голосов
/ 27 января 2010

Похоже, что оператор add_to_class в файле models.py выполняется дважды, поместите туда печать и посмотрите, что произойдет

0 голосов
/ 27 января 2010

Ваш код по-прежнему в порядке. У вас есть другие модели со ссылками на пользователя?

...