On Mon, 2009-01-19 at 22:38 -0800, I.A wrote: > Hi guys, > I apologize for the confusing title. > > I'm still confused on using the models in a m2m relationship. Suppose > I have the models below from the tutorials on the django site: > > class Author(models.Model): > name = models.CharField(max_length=50) > email = models.EmailField() > > def __unicode__(self): > return self.name > > class Entry(models.Model): > blog = models.ForeignKey(Blog) > headline = models.CharField(max_length=255) > body_text = models.TextField() > pub_date = models.DateTimeField() > authors = models.ManyToManyField(Author) > > If I have the Author that I want I can get all the entries related to > this Author by doing > > query_set = author.entry_set.all() > > If I do query_set.delete() at this point, I know it will delete all > the Entry data that relates to the particular Author, which will also > delete all relationships the other Authors had with the Entries in the > query_set. > > How do I then delete just the relationship of that particular Author > to those Entries without effecting other Author's relationship (i.e > deleting the data in the intermediary table only). If the are no other > Authors relating to these Entries, it would be ok then to delete those > Entries too.
There's a clear() method that works on reverse relations. It's only documented ([1]) as being for ForeignKey fields, but I just tested it (after finding it by browsing the source) and it appears to work on ManyToManyFields as well. Thus, author.entry_set.clear() does what you're after. It won't remove any Entry objects that subsequently end up with zero attached authors, as noted in the documentation. You'll have to do an extra query for that: Entry.objects.filter(authors=None).delete() [1] http://docs.djangoproject.com/en/dev/ref/models/relations/ Regards, Malcolm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---