You shouldn't define the relationship on both sides. Pick one - probably Messages - and define it there. Django automatically provides the reverse relationship.
Also, you don't need a separate User class, especially if the M2M field is on messages itself. So, you can just do this:
class Message(models.Model):
date = models.DateField()
text = models.CharField(max_length=255)
users = models.ManyToManyField('auth.User')
And now you can access the messages for a user with my_user.message_set.all()
, and the users for a message with my_messages.users.all()
.