django - model for a messaging app between users

django, django-models

Solution

My variant for common cases:

from django.utils.translation import ugettext_lazy as _

class Message(models.Model):
    """
    A private message from user to user
    """
    subject = models.CharField(_("Subject"), max_length=120, blank=True)
    body = models.TextField(_("Body"))
    sender = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='sender_messages', verbose_name=_("Sender"), )
    recipient = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='receiver_messages', null=True, blank=True, verbose_name=_("Recipient"))
    parent_msg = models.ForeignKey('self', related_name='next_messages', null=True, blank=True, verbose_name=_("Parent message"))
    sent_at = models.DateTimeField(_("sent at"), null=True, blank=True)
    read_at = models.DateTimeField(_("read at"), null=True, blank=True)
    replied_at = models.DateTimeField(_("replied at"), null=True, blank=True)
    sender_deleted_at = models.DateTimeField(_("Sender deleted at"), null=True, blank=True)
    recipient_deleted_at = models.DateTimeField(_("Recipient deleted at"), null=True, blank=True)
    ip = models.GenericIPAddressField(verbose_name=_('IP'), null=True, blank=True)
    user_agent = models.CharField(verbose_name=_('User Agent'), blank=True, max_length=255)

Problem

How do I go about creating a message app, between users. What's the business logic for creating the model? All I can think of was like this: models.py ``` class Message(models.Model): description = models.TextField() date_added = models.DateTimeField(default=datetime.now) sender = models.ForeignKey(User) recipient = models.ForeignKey(User) ``` I am not very sure if this is the way to go. If you could kindly guide me on how to get started, will be very thank full. Thank you!

Original source