2010-08-11 6 views
0

Où dois-je remplacer la méthode add() pour ManyToMany domaines connexes.Méthode d'écrasement ajouter pour ManyToMany champs connexes

On dirait que ce n'est pas un 'objet' de mon modèle. Parce que lorsque nous ajoutons une nouvelle relation pour les champs ManyToMany, nous n'écrivons pas Model.objects.add().

Donc ce dont j'ai besoin, c'est d'écraser la méthode add() d'instance. Comment puis-je le faire?

Edit:

donc je sais qu'il ya ManyRelatedManager. Une chose reste comment puis-je l'écraser? Désolé ... pas écraser, mais l'assigner dans mon modèle par défaut.

+0

Ce n'est pas vraiment raisonnable. Quel problème avez-vous? S'il vous plaît poster le code qui est cassé et l'erreur que vous obtenez. –

Répondre

0

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

Vous pouvez créer un certain nombre de gestionnaires pour un modèle.

Vous pouvez sous-classer un ManyRelatedManager et l'affecter au modèle.

Cet exemple peut être ce que vous cherchez

# 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. 

Le objects gérer est la valeur par défaut. Ne change pas ça.

Le dahl_objects est un gestionnaire personnalisé. Vous pouvez avoir n'importe quel nombre de ceux-ci.

+0

Je comprends que je peux surévaluer. C'est simple. Comment l'assigner au lieu du défaut ManyRelatedManager? La raison en est - j'ai un gros projet, et je ne veux pas changer partout le gestionnaire par défaut de mon costume. Je sais que si je fais ces objets = MyManager() il l'utilisera au lieu de défaut. Donc ce que je devrais faire pour changer ManyRelatedManager par défaut. – Pol

+0

@Pol: Prenez l'indice: ne changez pas la valeur par défaut. –