Django 测试 TypeError:字段“id”需要一个数字,但得到了 ()

问题描述 投票:0回答:2

我的代码中出现此错误 3 次。我搜索了其他问题,但没有找到任何有用的东西。 有人有什么想法吗?

谢谢你。

模型.py

class Exam(models.Model):
    code = models.CharField(max_length=50)
    name = models.CharField(max_length=100)
    semester = models.IntegerField(default=1)
    year = models.CharField(max_length=9)
    users = models.ManyToManyField(User, blank=True)

test_models.py

class ExamModelTestCase(TestCase):
    def setUp(self):
        self.user = User.objects.create(username='test_user', first_name='Test', last_name='User')
        self.exam = Exam.objects.create(code="EXAM1", name="Exam 1", semester=1, year="2024")

错误

Found 12 test(s).
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.....EEEEEE.
======================================================================
ERROR: test_exam_str_method (examc_app.tests.test_models.ExamModelTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/lucile/examreview/venv/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 2053, in get_prep_value
    return int(value)
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'tuple'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/lucile/examreview/examc_app/tests/test_models.py", line 9, in setUp
    self.exam = Exam.objects.create(id="1", code="EXAM1", name="Exam 1", semester=1, year="2024")
  
TypeError: Field 'id' expected a number but got ().

python django testing
2个回答
0
投票

我想你可以这样插入,而不需要通过id

self.exam = Exam.objects.create(id=1, code="EXAM1", name="Exam 1", semester=1, year="2024")

self.exam = Exam.objects.create(code="EXAM1", name="Exam 1", semester=1, year="2024")

0
投票

编辑

对不起我的缺点

class ExamModelTestCase(TestCase):
def setUp(self):
    self.user = User.objects.create(username='test_user', first_name='Test', last_name='User')
    self.exam = Exam.objects.create(code="EXAM1", name="Exam 1", semester=1, year="2024")

def test_exam_str_method(self):
    self.assertEqual(str(self.exam), "EXAM1-Exam 1 2024 1")

错误

 File "/home/lucile/examreview/examc_app/tests/test_models.py", line 45, in setUp
self.exam = Exam.objects.create(code="EXAM1", name="Exam 1", semester=1, year="2024")
TypeError: Field 'id' expected a number but got ().
© www.soinside.com 2019 - 2024. All rights reserved.