Получить тип атрибута модели django

Я пишу несколько тестов схемы для 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 ответ

Решение

Ты можешь использовать 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))
Другие вопросы по тегам