У меня уже есть проект с моделями (Пользователи и Книги). Я хотел бы добавить поле ManyToMany (M2M) к существующей модели Books, но команда syncbb этого не делает.
Подробности: в Книгах уже есть поле FK, которое отображается на User, и я хочу добавить новое M2M поле (читатели), которое также сопоставляется с пользователем. Как вы знаете, syncdb Django заботится только о таблицах, поэтому добавить обычное поле легко, но для M2M требуется новая таблица соединений (app_books_user), поэтому не следует ли syncdb cmd добавлять это, как любую другую новую таблицу? Он создал другую мою объединенную таблицу для поля "продавцы" Книги.
Когда я запустил syncdb, Сначала я получил сообщение об ошибке, в котором мне предлагалось использовать аргумент related_name, чтобы различать две ссылки на пользователя. Я добавил те. Однако, когда я снова запускаю 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)
Спасибо