有我的功能:
views.py
def save(request):
data = {'mark':request.POST.get('mark'), 'task':request.POST.get('task')}
Task.objects.filter(id=request.POST.get('s')).update(mark=data['mark'], task=data['task'])
return redirect(list)
我的测试有什么问题?它没有更新数据库。请帮助!!!
tests.py
from todo.models import Task
class TaskTest(TestCase):
def test_ok_update_task(self):
s=1
Task.objects.create(mark=True, task='task')
data = {'mark': False, 'task': '1'}
self.client.post('/save', data)
task_1 = Task.objects.filter(id=s).get()
self.assertNotEquals(task_1.mark, True)
self.assertNotEquals(task_1.task, 'task')
self.assertEquals(task_1.mark, data['mark'])
self.assertEquals(task_1.task, data['task'])
models.py
class Task(models.Model):
mark = models.NullBooleanField()
task=models.CharField(max_length=200, null=True)
up_url=models.CharField(max_length=1000, null=True)
down_url=models.CharField(max_length=1000, null=True)
update_url=models.CharField(max_length=1000, null=True)
delete_url=models.CharField(max_length=1000, null=True)
答案 0 :(得分:1)
您的视图希望request.POST['s']
包含ID
Task.objects.filter(id=request.POST.get('s'))
但您忘记将其包含在数据中。
data = {'mark': False, 'task': '1'}
调试此类问题的一种简单方法是将print语句添加到视图和测试中。如果您已将print request.POST
和print request.POST.get('s')
添加到模型中,那么您可能已经发现了问题。