0

我正在将我的 Django 应用程序从版本2.2升级到3.2。在升级时我面临以下问题,我花了很多时间来解决这个问题,但还没有得到任何解决方案。

这是我面临的问题的追溯:

  File ".../abc/test.py", line 85, in setUp
    self.MODEL_A.save()
  File ".../abc/models.py", line 470, in save
    super(MODEL_A, self).save(*args, **kwargs)
  File ".../lib/python3.8/site-packages/django/db/models/base.py", line 726, in save
    self.save_base(using=using, force_insert=force_insert,
  File ".../lib/python3.8/site-packages/django/db/models/base.py", line 763, in save_base
    updated = self._save_table(
  File ".../lib/python3.8/site-packages/django/db/models/base.py", line 842, in _save_table
    values = [(f, None, (getattr(self, f.attname) if raw else f.pre_save(self, False)))
  File ".../lib/python3.8/site-packages/django/db/models/base.py", line 842, in <listcomp>
    values = [(f, None, (getattr(self, f.attname) if raw else f.pre_save(self, False)))
  File ".../lib/python3.8/site-packages/django/db/models/fields/__init__.py", line 1396, in pre_save
    value = timezone.now()
TypeError: '_SentinelObject' object is not callable

任何帮助将不胜感激。

提前致谢。

4

1 回答 1

2

copy.deepcopy()不推荐分配期间不支持的对象setUpTestData()setUpClass()在或期间分配单位属性setUp(),或添加对deepcopy().

因此,您的测试用例中可能会有如下代码:

@classmethod
def setUpTestData(cls):
    super(YourTestClassNameHere, cls).setUpTestData()

更改此代码如下:

@classmethod
def setUpClass(cls):
    super(YourTestClassNameHere, cls).setUpClass()

这将解决您的_SentinelObject问题。

于 2022-01-17T14:43:36.073 回答