我是 django 的新手,我在测试 app_model_changelist 下拉列表中的自定义操作(例如 actions=['mark_as_read'])时遇到了问题,它与标准“删除选定”的下拉列表相同。自定义操作在管理 View 中工作,但我只是不知道如何在我的模拟请求中调用它,我知道我需要发布数据但是如何说我希望对我发布的数据执行“mark_as_read”操作?
我想反转更改列表 url 并发布查询集,以便“mark_as_read”操作函数将处理我发布的数据。
change_url = urlresolvers.reverse('admin:app_model_changelist')
response = client.post(change_url, <QuerySet>)
最佳答案
只需将操作名称传递给参数action
即可。
response = client.post(change_url, {'action': 'mark_as_read', ...})
选中的项目作为 _selected_action
参数传递。所以代码将是这样的:
fixtures = [MyModel.objects.create(read=False),
MyModel.objects.create(read=True)]
should_be_untouched = MyModel.objects.create(read=False)
#note the unicode() call below
data = {'action': 'mark_as_read',
'_selected_action': [unicode(f.pk) for f in fixtures]}
response = client.post(change_url, data)
关于django - 在 Django 中测试自定义管理操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29026779/