У меня есть модель, подобная этой:
class CreateDeal(models.Model):
name = models.CharField(max_length=100)
fuel = models.CharField(max_length=15)
mileage = models.PositiveIntegerField(db_index=True)
phone_number = models.CharField(max_length=17)
location = models.CharField(max_length=100, db_index=True)
car_picture = models.ImageField(upload_to='car_picture')
description = models.TextField()
price = models.PositiveSmallIntegerField(db_index=True)
available = models.BooleanField(default=True)
created_on = models.DateTimeField(default=timezone.now)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.name
, и у меня есть тестовый класс для тестирования модели выше, как это:
class CreateDealTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(
username='alfa', email='alfa@hotmail.com', password='top_secret'
)
self.deal = CreateDeal.objects.create(
name='deal1', mileage=100, price=25, user=self.user
)
def test_deal_name(self):
deal = CreateDeal.objects.get(name='deal1')
expected_deal_name = f'{self.deal.name}'
self.assertAlmostEqual(expected_deal_name, str(deal))
, если я запускаю тест, у меня есть:
Ran 1 test in 0.166s
OK
Мой вопрос заключается в том, почему django не вызывает исключение, так как почти все поля в моей модели являются обязательными. И что я не понимаю, так это если я удаляю одно поле Createdeal
в моем setUp
(например, пробег, цена, пользователь или имя), у меня появляется ошибка.
Например, если я удаляю mileage
, У меня есть эта ошибка:
повышение utils.IntegrityError (* tuple (e.args))
django .db.utils.IntegrityError: (1048, "Столбец «пробег» не может быть нулевым »)