2010-08-11 4 views
0

Где я должен переписать метод add() для связанных полей ManyToMany.Метод перезаписи add для многосвязных полей ManyToMany

Похоже, что это не объекты менеджера из моей модели. Потому что, когда мы добавляем новое отношение для полей ManyToMany, мы не пишем Model.objects.add().

Так что мне нужно переписать метод add() экземпляра. Как мне это сделать?

Edit:

Так я знаю, что есть ManyRelatedManager. Осталось только, как я могу его переписать?

Извините ... не перезаписывайте, но назначайте его в моей модели по умолчанию.

+0

Это не очень разумно. Какая у вас проблема? Пожалуйста, опубликуйте код, который сломан, и ошибка, которую вы получаете. –

ответ

0

http://docs.djangoproject.com/en/1.2/topics/db/managers/#custom-managers

Вы можете создать любое количество менеджеров для одной модели.

Вы можете подклассифицировать ManyRelatedManager и назначить его модели.

Этот пример может быть то, что вы ищете

# Then hook it into the Book model explicitly. 
class Book(models.Model): 
    title = models.CharField(max_length=100) 
    author = models.CharField(max_length=50) 

    objects = models.Manager() # The default manager. 
    dahl_objects = DahlBookManager() # The Dahl-specific manager. 

objects управления по умолчанию. Не меняйте это.

dahl_objects - персональный менеджер. У вас может быть любое из них.

+0

Я понимаю, что могу его переопределить. Это просто. Как назначить его, а не по умолчанию ManyRelatedManager? Причина в том, что у меня большой проект, и я не хочу менять везде менеджер по умолчанию для моего костюма. Я знаю, если я сделаю это objects = MyManager(), он будет использовать его вместо значения по умолчанию. Так что я должен сделать, чтобы изменить значение по умолчанию ManyRelatedManager. – Pol

+0

@Pol: Подсказка: не меняйте значение по умолчанию. –

Смежные вопросы