【问题标题】:ValueError: Cannot assign "'Category'": "Course.category" must be a "Category" instanceValueError:无法分配“'Category'”:“Course.category”必须是“Category”实例
【发布时间】:2019-07-09 07:54:42
【问题描述】:

我在尝试运行单元测试时遇到问题。 为什么它会给我那个错误信息?

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)

模型.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”实例。

【问题讨论】:

  • 你能分享你的models.py吗?
  • 欢迎来到 StackOverflow!寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码在问题本身。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example
  • 刚刚添加的-models.py,下面的代码帮不上我了(

标签: python python-3.x unit-testing django-rest-framework


【解决方案1】:

试试下面的代码

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)

【讨论】:

  • 刚刚添加的-models.py,下面的代码帮不上我了(
【解决方案2】:

只要改变这个:

category_id=self.create_category().id,

到这里:

category=self.create_category(),

错误ValueError: Cannot assign "'Category'": "Course.category" must be a "Category" instance. 告诉您属性category 期待Category 的类实例,而不是他的id

【讨论】:

  • 那么问题不在于这段代码。也许完整的回溯会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 2019-11-14
  • 2020-04-04
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多