Creating a simple messaging function (NOT REAL TIME) using Django

26 Views Asked by At

Please I'm trying to implement a SIMPLE messaging function (NOT A REAL TIME CHAT)

But I keep getting this error message I understand what it says or mean but I'm not sure why I am unable to establish this relationship

enter image description here

Please I need help to alternative if I can't do things this way This is my profile(Engineer) models

class Engineer(AbstractUser):
    username = models.CharField(max_length=200, null=True)
    email = models.EmailField(unique=True, null=True)
    bio = models.TextField()
    avatar = models.ImageField(default="profile.png")
    country = models.CharField(max_length=200)
    years_of_experience = models.PositiveIntegerField(null=True, blank=True)
    tech_stack = models.CharField(null=True, blank=True, max_length=300)
    inbox = models.ForeignKey(Inbox, null=True, on_delete=models.CASCADE)

    USERNAME_FIELD = "email"
    REQUIRED_FIELDS = ["username"]

    def __str__(self):
        return self.username

and this is my Inbox models

class Inbox(models.Model):
    sender = models.ForeignKey(Engineer, null=True, on_delete=models.CASCADE, related_name='mail_sender')
    receiver = models.ForeignKey(Engineer, null=True, on_delete=models.CASCADE, related_name="mail_receiver")
    message = models.CharField(max_length=500)
    updated = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ["-created"]

    def __str__(self):
        return self.sender.username
1

There are 1 best solutions below

0
On

Just make the Engineer import as follows

sender = models.ForeignKey('Engineer', null=True, on_delete=models.CASCADE, related_name='mail_sender')
receiver = models.ForeignKey('Engineer', null=True, on_delete=models.CASCADE, related_name="mail_receiver")