获取 Django 模型属性的类型

Get type of django model attribute

我正在为 django 编写一些模式测试,使用 unittest 框架的 django 包装器。

我想检查字段是否始终为 DateTimeField,而不是 DateField。所以我尝试了以下操作:

class TestSuite(TestCase):
    def test_for_correct_datetype(self):
        self.assertTrue(isinstance(Obj.time, models.DateTimeField))

因为之前:

class Obj(models.Model):
    ....
    time = models.DateTimeField()

注意:有几个答案说要使用 getattr,但它对我也不起作用。

如何使 self.assertTrue() 正常工作?

您可以使用模型 _meta 中的 get_field 方法 API:

from django.db import models

class TestSuite(TestCase):
    def test_for_correct_datetype(self):
        self.assertTrue(isinstance(Obj._meta.get_field('time'), models.DateTimeField))