Как переопределить "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)