Django - Cannot assign "<User: testuser>": "Profilavas.category" must be a "Profiles" instance

Рейтинг: 0Ответов: 1Опубликовано: 17.08.2023

Я сталкиваюсь с ошибкой , Cannot assign "<User: testuser>": "Profilavas.category" must be a "Profiles" instance. Не удаётся в поле - category назначить id модели Profiles

    class Profiles(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        firstname = models.TextField(blank=True, null=True)
        lastname = models.TextField(blank=True, null=True)
        gender = models.CharField(("gender"), max_length=20)

    class Profilavas(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE, unique=True)
        avatar = models.ImageField(default='default.jpg', upload_to='profile_images')
        category = models.OneToOneField('Profiles',on_delete = models.CASCADE)
        def __str__(self):
            return self.user.username
        def save(self, *args, **kwargs):
            super().save()
            img = Image.open(self.avatar.path)
            if img.height > 900 or img.width > 900:
                new_img = (900, 900)
                img.thumbnail(new_img)
                img.save(self.avatar.path)

     @receiver(post_save, sender=User)
     def create_user_profile(sender, instance, created, **kwargs):
         if created:
             Profiles.objects.create(user=instance)
             Profilavas.objects.create(user=instance , category=instance)

Проблема возникает когда вызывается сигнал "Profilavas.objects.create(user=instance , category=instance)"

Ответы

▲ 0

выведи объект Profiles в переменную, и переменную вставь в category:

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
     category_id = Profiles.objects.create(user=instance)
     Profilavas.objects.create(user=instance, category= category_id)