我有一個簡單的創建視圖爲一個簡單的模型與默認值字段。我想通過僅提供沒有默認值的字段來測試此設置。 測試失敗,因爲在數據庫中沒有創建對象。玩過打印後,我知道以下幾點: 模型clean()通過,並且提供了默認值。 響應聲明「此字段是必需的。」爲maxVar和minVotes。 (和發送這兩個值可以通過測試。)Django的CreateView - 忽略POST測試的默認值
的失敗的測試是:
from django.test import TestCase
from django.utils import timezone
from django.core.urlresolvers import reverse
import datetime
from testcase.models import Poll
class PollCreateTest(TestCase):
def test_create_with_description_only(self):
"""description should be sufficient to create a poll."""
self.assertEqual(Poll.objects.count(), 0)
x = self.client.post(reverse('rating:create'), {'description':'A Poll'})
#print x
self.assertEqual(Poll.objects.count(), 1)
與對應models.py:
from django.db import models
from django.core.urlresolvers import reverse
class Poll(models.Model):
description = models.TextField()
pub_date = models.DateTimeField('date published')
minVotes = models.IntegerField(default=5)
maxVar = models.FloatField(default = 0.0)
finished = models.BooleanField(default=False)
而views.py:
from django.shortcuts import render
from django.views import generic
from .models import Poll
class CreateView(generic.edit.CreateView):
model=Poll
fields=['description', 'maxVar', 'minVotes']
我想讓自己熟悉Django。這個問題可以通過用自定義的clean()方法編寫FormView來解決。但我想知道爲什麼這不起作用,理想情況下,如何解決問題。
我使用Django 1.8和Python 2.7.8。
你可以包含你正在使用的Django和Python的版本嗎? –