1

I am trying to create a Mail function as part of my website, I would like to save the receiving User instead of the receiving User's username in the receiver part of the Mail class, so I don't have to filter the User. This is what I did:

class Mail(models.Model):
    sender = models.ForeignKey(User, on_delete=models.CASCADE)
    receiver = models.ForeignKey(User, on_delete=models.CASCADE, choices=[(u.username, u) for u in User.objects.all()])
    title = models.CharField(max_length=50)
    content = models.TextField()

django is giving me this error

ERRORS:
mail.Mail.sender: (fields.E304) Reverse accessor for 'mail.Mail.sender' clashes with reverse accessor for 'mail.Mail.receiver'.
        HINT: Add or change a related_name argument to the definition for 'mail.Mail.sender' or 'mail.Mail.receiver'.
mail.Mail.receiver: (fields.E304) Reverse accessor for 'mail.Mail.receiver' clashes with reverse accessor for 'mail.Mail.sender'.
        HINT: Add or change a related_name argument to the definition for 'mail.Mail.receiver' or 'mail.Mail.sender'.
Raymond Li
  • 39
  • 5

1 Answers1

0

You need to add related_name attribute. For more information read this post: What is related_name used for?

class Mail(models.Model):
    sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sender')
    receiver = models.ForeignKey(User, on_delete=models.CASCADE, choices=[(u.username, u) for u in User.objects.all()], related_name='receiver')
    title = models.CharField(max_length=50)
    content = models.TextField()
Khanzadeh_AH
  • 139
  • 6