How to add two foreign keys in message table of same(user) table as foreign keys?

Issue

I am trying to design a chatting app using Django rest at the backend

My Model

class MessageModel(models.Model):
    message = models.CharField(max_length=200)
    msg_from = models.ForeignKey(UserModel,on_delete=models.CASCADE)
    msg_to = models.ForeignKey(UserModel,on_delete=models.CASCADE)

but it gives the following error

SystemCheckError: System check identified some issues:

ERRORS:
message_api.MessageModel.msg_from: (fields.E304) Reverse accessor for 'message_api.MessageModel.msg_from' clashes with reverse accessor for 'message_api.MessageModel.msg_to'.
        HINT: Add or change a related_name argument to the definition for 'message_api.MessageModel.msg_from' or 'message_api.MessageModel.msg_to'.
message_api.MessageModel.msg_to: (fields.E304) Reverse accessor for 'message_api.MessageModel.msg_to' clashes with reverse accessor for 'message_api.MessageModel.msg_from'.
        HINT: Add or change a related_name argument to the definition for 'message_api.MessageModel.msg_to' or 'message_api.MessageModel.msg_from'.

How can I design a database table for chatting?
I am using MySQL database.

Solution

class MessageModel(models.Model):
    message = models.CharField(max_length=200)
    msg_from = models.ForeignKey(UserModel,on_delete=models.CASCADE, related_name="msg_sender")
    msg_to = models.ForeignKey(UserModel,on_delete=models.CASCADE,related_name="msg_reciever")

Good advice from Willem also don’t use the Model suffix, instead name your models "Message" and "User"

Answered By – oruchkin

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published