Сообщение об ошибке Django “Добавить аргумент related_name в определение”

D:\zjm_code\basic_project>python manage.py syncdb Error: One or more models did not validate: topics.topic: Accessor for field 'content_type' clashes with related field 'Cont entType.topic_set'. Add a related_name argument to the definition for 'content_t ype'. topics.topic: Accessor for field 'creator' clashes with related field 'User.crea ted_topics'. Add a related_name argument to the definition for 'creator'. topics.topic: Reverse query name for field 'creator' clashes with related field 'User.created_topics'. Add a related_name argument to the definition for 'creato r'. topicsMap.topic: Accessor for field 'content_type' clashes with related field 'C ontentType.topic_set'. Add a related_name argument to the definition for 'conten t_type'. topicsMap.topic: Accessor for field 'creator' clashes with related field 'User.c reated_topics'. Add a related_name argument to the definition for 'creator'. topicsMap.topic: Reverse query name for field 'creator' clashes with related fie ld 'User.created_topics'. Add a related_name argument to the definition for 'cre ator'. 

У вас есть несколько внешних ключей, для которых django не может генерировать уникальные имена.

Вы можете помочь, добавив аргументы «related_name» в определения полей foreignkey в ваших моделях. Например:

 content_type = ForeignKey(Topic, related_name='topic_content_type') 

См. Здесь больше. http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name

Пример:

 class Article(models.Model): author = models.ForeignKey('accounts.User') editor = models.ForeignKey('accounts.User') 

Это вызовет ошибку, поскольку Django пытается автоматически создать обратную связь для экземпляров accounts.User для каждого отношения внешнего ключа к пользователю, например user.article_set . Этот метод по умолчанию неоднозначен. Будет ли user.article_set.all() ссылаться на статьи пользователя, связанные с полем автора, или полем редактора?

Решение:

 class Article(models.Model): author = models.ForeignKey('accounts.User', related_name='author_article_set') editor = models.ForeignKey('accounts.User', related_name='editor_article_set') 

Теперь для экземпляра пользователя user существуют два разных метода менеджера:

  1. user.author_article_setuser.author_article_set.all() вернет Queryset всех объектов статьи, у которых есть автор == user

  2. user.editor_article_setuser.editor_article_set.all() вернет Queryset всех объектов Article, у которых есть редактор == user

«Если у модели есть ForeignKey, экземпляры модели с внешним ключом будут иметь доступ к Менеджеру, который возвращает все экземпляры первой модели. По умолчанию этот менеджер называется FOO_set, где FOO – это имя исходной модели с нижним регистром».

Но если у вас более одного внешнего ключа в модели, django не может генерировать уникальные имена для менеджера внешнего ключа.
Вы можете помочь, добавив аргументы «related_name» в определения полей foreignkey в ваших моделях.

См. Здесь: https://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward

Сделайте так, чтобы сообщение об ошибке указывало:

Добавьте аргумент related_name в определение для ‘creator’.

Но в моем случае я создаю отдельное приложение для некоторых функций с тем же именем и полем (copy / paste;)), из-за этого возникает ошибка. Я просто удалил старую модель, и код будет работать нормально
Может быть, полная помощь для начинающих, таких как я 🙂

Это не окончательный ответ на этот вопрос, однако для кого-то он может решить проблему. У меня была такая же ошибка в моем проекте после проверки действительно старого фиксации (переход в состояние отсоединенной головки), а затем восстановление базы кода. Решение заключалось в том, чтобы удалить все * .pyc-файлы в проекте.

  • Django: переадресовать пользователей с учетной записи
  • Django: доступ к переменным сеанса из шаблона?
  • задать язык в представлении django
  • Как получить доступ к элементам массива в шаблоне Django?
  • Как я могу получить полный / абсолютный URL (с доменом) в Django?
  • Структура каталога Django?
  • Путаница в администраторах Django, статических и медиафайлах
  • Django: добавление «NULLS LAST» к запросу
  • Django TemplateDoesNotExist?
  • Django: Как перенаправить сообщение и передать данные сообщения
  • Менеджер недоступен; Пользователь был заменен на «pet.Person»
  • Давайте будем гением компьютера.