I have a Project model with a ManyToManyField called "members" to keep
track of members of a project. Whenever the model is updated, I need
to check if certain members need to be removed from or added to the
m2m field. The most logical place to do this is in the model's custom
save method, but when I try to save the model in the admin the members
field reverts to its previous state even after running
self.members.remove(user1) and self.members.add(user2). From what I
have researched and tested so far, if you save a project from a front-
end view, the m2m field updates without reverting to its previous
state, but I really need this functionality when a model is saved in
the admin as well. Any insight into how to make this work would be
appreciated. Here's what I'm working with right now:
class Project(models.Model):
....
assigned_to = models.ForeignKey(User,
related_name="projects_assigned_to")
sales_rep = models.ForeignKey(User,
related_name="sales_rep_projects")
sales_mgr = models.ForeignKey(User,
related_name="sales_mgr_projects")
....
def save(self, force_insert=False, force_update=False):
if Project.objects.filter(id__exact=self.id).count():
project = Project.objects.get(id=self.id)
old_sales_rep = project.sales_rep
old_sales_mgr = project.sales_mgr
super(Project, self).save()
if old_sales_rep != self.sales_rep:
if old_sales_rep in self.members.all():
self.members.remove(old_sales_rep)
if self.sales_rep:
self.members.add(self.sales_rep)
if old_sales_rep == self.assigned_to:
new_assigned = self.sales_rep
if old_sales_mgr != self.sales_mgr:
if old_sales_mgr in self.members.all():
self.members.remove(old_sales_mgr)
if self.sales_mgr:
self.members.add(self.sales_mgr)
if old_sales_mgr == self.assigned_to:
new_assigned = self.sales_mgr
if new_assigned:
self.assigned_to = new_assigned
super(Project, self).save()
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---