Estoy actualizando mi aplicación Django de la versión 2.2 a la 3.2 . Mientras actualizo, me enfrento al siguiente problema, pasé mucho tiempo para resolverlo, pero aún no obtuve ninguna solución.
Aquí está el rastreo del problema al que me enfrento:
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 callableCualquier ayuda sería muy apreciada.
Gracias por adelantado.
La asignación de objetos que no admiten copy.deepcopy() durante setUpTestData() está obsoleta. Asigne el atributo de unidad durante setUpClass() o setUp() , o agregue soporte para deepcopy() .
Entonces podría haber un código en sus casos de prueba como el siguiente:
@classmethod def setUpTestData(cls): super(YourTestClassNameHere, cls).setUpTestData()Cambie este código de la siguiente manera:
@classmethod def setUpClass(cls): super(YourTestClassNameHere, cls).setUpClass() Esto resolverá sus problemas _SentinelObject .