ValueError: Невозможно назначить «Category»: «Course.category» должен быть экземпляром «Category» - PullRequest
0 голосов
/ 09 июля 2019

У меня проблема при попытке запустить мои юнит-тесты. Почему это дает мне это сообщение об ошибке?

Код из tests.py:

class CourseTestCase(TestCase):
    def create_category(name="English", imgpath="ImgPath"):
        return Category.objects.create(name=name, imgpath=imgpath)

    def setUp(self):
        Course.objects.create(
            name='English',
            description='Sample text',
            category_id=self.create_category().id,
            logo='Logo'
        )

    def test_course_category(self):
        english = Course.objects.get(name='English')
        self.assertEqual(english.category_id, 1)

Models.py:

class Category(models.Model):
    name = models.CharField(max_length=64)
    imgpath = models.CharField(max_length=64)

    def __str__(self):
        return str(self.name)

class Course(models.Model):
    name = models.CharField(max_length=64)
    description = models.TextField()
    category = models.ForeignKey(Category, on_delete=models.CASCADE, null=False)
    logo = models.TextField()

    def __str__(self):
        return str(self.name)

ValueError: Невозможно назначить «Category»: «Course.category» должен быть экземпляром «Category».

Ответы [ 2 ]

1 голос
/ 09 июля 2019

попробуйте ниже код

class CourseTestCase(TestCase):

    def setUp(self):
        self.category = Category.objects.create(name="English", imgpath="ImgPath")
        self.course = Course.objects.create(
            name='English',
            description='Sample text',
            category=self.category,
            logo='Logo'
        )

    def test_course_category(self):
        english = Course.objects.get(name='English')
        self.assertEqual(english.category_id, self.category.id)
0 голосов
/ 09 июля 2019

Просто измените это:

category_id=self.create_category().id,

на это:

category=self.create_category(),

Ошибка ValueError: Cannot assign "'Category'": "Course.category" must be a "Category" instance. говорит вам, что атрибут category ожидает экземпляр класса Category а не его id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...