У меня есть модель с PositiveIntegerField в моем приложении Django (взгляды):Джанго PositiveIntegerField принимать негативы
class Post(models.Model):
author = models.ForeignKey('UserProfile')
creation_date = models.DateTimeField(auto_now_add=True)
views = models.PositiveIntegerField(default=0)
tags = models.ManyToManyField('Tag', through="PostTagging", null=False, blank=False)
rating = models.FloatField(default=0)
Однако, когда я проверить это, он принимает отрицательные значения:
Тест:
def test_post_with_negative_views(self):
test_user = User.objects.get(username='test_student')
test_user_profile = UserProfile.objects.get(user=test_user)
post = Post.objects.create(author=test_user_profile, title='Django Testing', content='hello world', views=-10)
self.assertEquals(post.views, 0)
Сбой:
Creating test database for alias 'default' ...
......F.......
=====================================================================
FAIL: test_post_with_negative_views (bark.tets.PostTest)
---------------------------------------------------------------------
Traceback (most recent call last):
File "/home/ewan/Documents/WAD2/studeso/bark/bark/tests.py", line 58, in test_post_with_negative_views
self.assertEquals(post.views, 0)
AssertionError: -10 != 0
---------------------------------------------------------------------
FAILED (failures=1)
Я делаю что-то неправильно здесь?
Я пробовал тестировать его с помощью int (-10) и int ("- 10"), потому что это была ошибка форматирования строки. Я получаю много. Ответ
catavaran в том числе:
post.full_clean()
также терпит неудачу.
Проверка положительности выполняется на уровне базы данных, и SQLite-движок не проверяет его вообще. Он был изменен в версии 1.7, в какой версии django вы используете? – GwynBleidD
Использование Django 1.7 – Ewan