django добавляет поле / таблицу ManyToMany к существующей схеме, related_name error

У меня уже есть проект с моделями (Пользователи и Книги). Я хотел бы добавить поле 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)

Спасибо

8
задан rich 21 October 2010 в 16:28
поделиться