Как вы тестируете типы полей модели в Django? - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь проверить, действительно ли поле является первичным ключом.

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 голосов
/ 17 июня 2020

Это MyModel._meta.pk.name даст вам имя primary key

0 голосов
/ 17 июня 2020

По какой-либо причине ваш код заставляет Django сохранять объект с первичным ключом, установленным на пустую строку ''. В docs указано, что Django использует в качестве null пустую строку.

Как говорится , это задумано и задокументировано. Кроме того, они заявили, что primary_key=True не подразумевает blank=False, null=False и unique=True, тем не менее, когда я добавил null=False, это не помогло, и снова тест прошел. Я думаю, это будет проблема или, по крайней мере, неопределенное поведение с Django.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...