У меня есть существующий проект с моделями (пользователи и книги). Я хотел бы добавить поле ManyToMany (M2M) к существующей модели Books, но команда syncbb этого не делает.
Подробности: в книгах уже есть поле FK, которое отображается на пользователя, и я хочу добавить новое поле M2M (считыватели), которое также отображается на пользователя. Как вы знаете, syncdb в Django заботится только о таблицах, поэтому добавить нормальное поле легко, но M2M требует новую таблицу соединений (app_books_user), поэтому разве не следует добавить syncdb cmd, как любую другую новую таблицу? Он создал мою другую объединенную таблицу для поля продавцов Книги.
Когда я запустил syncdb, я первоначально получил сообщение об ошибке, предписывающее мне использовать аргумент related_name, чтобы помочь различать две ссылки на User. Я добавил их. Однако, когда я снова запускаю syncdb, он не создает новую таблицу соединений (но теперь она не содержит ошибок). Новое поле существует, когда я просматриваю его через командную консоль, но не могу его использовать, поскольку таблица соединения не существует. Я посмотрел на код sql через cmd 'sqlall', и он выводит SQL для новой таблицы, но он не выполняется.
Чего мне не хватает? Должен ли я просто форсировать SQL (из sqlall) через браузер базы данных? Будет ли это иметь какие-либо последствия? Код следует:
Models.py
from django.contrib.auth.models import User
class Seller(models.Model):
...
class Books(models.Model):
name=models.CharField(max_length=50)
author=models.ForeignKey(User, related_name='creator')
readers=models.ManyToManyField(User, blank=True, related_name='viewers')
sellers=models.ManyToManyField(Seller)
Спасибо