我正在尝试测试字段是否实际上是主键。
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
答案 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=True
,blank=False
和null=False
,但是当我添加unique=True
时却无济于事考试通过了。我认为这将是一个问题,或者至少是Django的未定义行为。
答案 1 :(得分:0)
此MyModel._meta.pk.name
将为您提供primary key
的名称