您如何在Django中测试模型字段类型?

时间:2020-06-17 16:52:57

标签: python sql django database testing

我正在尝试测试字段是否实际上是主键。

class PatientTests(test.TestCase):
    def test_primary_key(self):
        # Cannot be NULL
        patient = models.Patients(patient_id=None)
        patient.save()

但是测试通过了,没有引发异常。

我的模型定义:

class Patients(models.Model):
    patient_id = models.CharField(max_length=12, primary_key=True)

使用Django版本3.0.7

2 个答案:

答案 0 :(得分:0)

无论出于何种原因,您的代码都会导致Django保存主键设置为空字符串id type name parent ____________________________________________________ 1 database dev NULL 2 schema BigBangTheory 1 3 table SomeTable1 2 4 table SomeTable2 2 5 table SomeTable3 2 6 schema Walle 1 7 table AnotherTable100 6 8 table AnotherTable200 6 9 schema StarWars 1 10 table SpaceTablexxx 9 11 table SpaceTableyyy 9 12 database stage NULL 13 schema BigBangTheory 12 14 table SomeTable1 13 15 table SomeTable2 13 16 table SomeTable3 13 17 schema Walle 12 18 table AnotherTable100 17 19 table AnotherTable200 17 20 schema StarWars 12 21 table SpaceTablexxx 20 22 table SpaceTableyyy 20 的对象。在docs中,声明Django的约定是将空字符串用作null。

As they say,这是设计使然并记录在案的。此外,they have stated that ''并不意味着primary_key=Trueblank=Falsenull=False,但是当我添加unique=True时却无济于事考试通过了。我认为这将是一个问题,或者至少是Django的未定义行为。

答案 1 :(得分:0)

MyModel._meta.pk.name将为您提供primary key的名称