Как переопределить "Cannot asign must be an instance" в Django?

У меня есть две модели:

class Message(models.Model):
    username = models.CharField(max_length=255)
    room = models.CharField(max_length=255)
    content = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)

class Notification(models.Model):
    notification_author = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="notifauthor")
    notification_from = models.ForeignKey(Order, on_delete=models.CASCADE, related_name="notiffrom")
    is_read = models.BooleanField(default=False)

сигналы:

@receiver(post_save, sender=Message)

def create_user_notification(sender, instance, created, **kwargs):
    if created:
        Notification.objects.create(
                                    notification_author=instance.username,
                                    notification_from=instance.room)

@receiver(post_save, sender=Message)
def save_user_notification(sender, instance, **kwargs):
    instance.username.save()

Я пытаюсь создать сигнал для создания уведомления после создания сообщения. Но есть ошибка:

Невозможно присвоить значение "20": "Notification.notification_author" должен быть экземпляром "Profile".

Как переопределить его (если это возможно) без изменения CharField на FK в модели Message?

Нашел кое-что о eval(), но она все еще не работает

Вопрос в том, как преобразовать строку в модель профиля без используя FK

notification_author=Profile.objects.get_or_create(username=instance.username)
Вернуться на верх