AlueError: Cannot assign value-field-must-be-a-object-instance

Я получаю следующую ошибку

ValueError: Cannot assign "(<UserProfile: testUser>, True)": "Comments.profileInfo" must be a "UserProfile" instance.

Что я делаю - это модульное тестирование :

def create_user_profile(user):
profile = UserProfile.objects.update_or_create(gender = 'F',
                                               defaults={
                                               'user': user})
return profile



def create_comment(profile, cat):
comment, __ = Comments.objects.update_or_create(
    defaults= {'profileInfo' : profile,
    'category' : cat}
)
return comment

class CommentsFeature(TestCase):
def setUp(self):
    self.user = create_user("testUser", "testPassword")
    login = self.client.login(username='testUser', password='testPassword')
    
    self.profile = create_user_profile(self.user) 
    self.comment = create_comment(self.profile, self.cat)

Код модели:

class Comments(models.Model):
profileInfo = models.ForeignKey(UserProfile, on_delete=models.CASCADE)

class UserProfile(models.Model):
GENDER_CHOICES = (
    ('F', 'Female'),
    ('M', 'Male'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
dob = models.DateField(blank=True, null=True)
facebook = models.BooleanField(default = False)
# This line is required. Links UserProfile to a User model instance.
user = models.OneToOneField(User, on_delete=models.CASCADE)
website = models.URLField(default = "", blank = True)
picture = models.ImageField(upload_to='profile_images', default="", blank = True)
def __str__(self):
    return self.user.username

Ошибка возникает только в функции настройки. Мои тестовые примеры возвращают эту ошибку

Traceback (последний последний вызов): File "C:\Users\nikhi\Workspace_backup\Rango_Project\rango\tests.py", line 187, in setUp self.comment = create_comment(self.profile, self.cat) Файл "C:\Users\nikhi\Workspace_backup\Rango_Project\rango\tests.py", строка 53, в create_comment 'category' : cat}

Возвращается кортеж:

profile, _ = UserProfile.objects.update_or_create(gender = 'F',
                                           defaults={
                                           'user': user})

profile - ваш пользователь, _ - булево, если он был создан или обновлен.

Вернуться на верх