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

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 1:[1]

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"

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 oruchkin