This seems like a job for signals. Register a post_save signal for the Message class, something like this:
On Tuesday, December 3, 2013 11:56:23 AM UTC, Aamu Padi wrote:
-- from django.db.models.signals import post_save
from django.dispatch import receiver
from myapp.models import Message, Thread
@receiver(post_save, sender=Message) def add_to_thread(sender, instance, created, **kwargs): if created:
instance.thread.user.add(instance.sender)
On Tuesday, December 3, 2013 11:56:23 AM UTC, Aamu Padi wrote:
Ok! Plural names. Got it. But I was looking for something more of a overriding the save method for the Thread class, so that I don't have to do that in the view.On Tue, Dec 3, 2013 at 1:39 PM, <jirka.v...@gmail.com> wrote:You're probably looking for something along the lines of:--
thread = Thread.objects.get(id=<someid>)
msg = Message.objects.get(id=<someid>)
thread.user.add(msg.sender)
Look at add() and remove() methods in documentation (search for related managers).
FYI - it's a good practice to name fields that use ManyToMany field in plural, i.e. Thread.users would be better than Thread.user
HTH
JirkaFrom: Aamu Padi <aamu...@gmail.com>Sender: django...@googlegroups.comDate: Tue, 3 Dec 2013 04:19:55 +0530ReplyTo: django...@googlegroups.comSubject: Save the user from one model to the another model--What I want to do is, whenever I create a new message, I want the sender of the Message to be added to the user of the Thread. How do I do that?
class Thread(models.Model):
user = models.ManyToManyField(User)
is_hidden = models.ManyToManyField(User, related_name='hidden_thread', blank=True)
def __unicode__(self):
return unicode(self.id)
class Message(models.Model):
thread = models.ForeignKey(Thread)
sent_date = models.DateTimeField(default=datetime.now)
sender = models.ForeignKey(User)
body = models.TextField()
is_hidden = models.ManyToManyField(User, related_name='hidden_message', blank=True)
def __unicode__(self):
return "%s - %s" % (unicode(self.thread.id), self.body)
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com .
To post to this group, send email to django...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users .
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ .CAHSNPWveL8rqDLenDLayGrtC_ RAwQ-Pfp0SYravr7%2BuJzhBhXw% 40mail.gmail.com
For more options, visit https://groups.google.com/groups/opt_out .
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com .
To post to this group, send email to django...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users .
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/495305343- .1386058174-cardhu_ decombobulator_blackberry.rim. net-1176089190-%40b17.c3. bise7.blackberry
For more options, visit https://groups.google.com/groups/opt_out .
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/08020d00-75e3-4c5f-8a7b-76b5d4980740%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment