Получить тип атрибута модели django - PullRequest
0 голосов
/ 26 апреля 2018

Я пишу несколько тестов схемы для django, используя оболочку django фреймворка unittest.

Я хочу проверить, что поле всегда будет 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() работать?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете использовать get_field метод из API Model _meta:

from django.db import models

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