我试图用Unittests重现ModelAdmin中的一个(明显的)问题。你知道吗
在ModelAdmin中,保存模型时执行一些额外的操作。为此,我引入了新的实例变量collection_page
。你知道吗
class MyModelAdmin(admin.ModelAdmin):
...
def save_model(self, requset, obj, form, change):
...
if obj_is_new:
self.collection_page = ....
...
self.collection_page # <== AttributeError if obj is not new.
我使用django.test.Client
测试模块两次,如下所示:
class CollectionAdminTestCase(django.test.TestCase):
...
def test_redirect_after_editing_existing_object(self):
self.client.post(
self.creation_path,
self.creation_post
)
response = self.client.post(
self.change_path,
self.change_post
)
self.assertEqual(
response.status_code, 302
)
测试通过了,但应该失败。你知道吗
当我加上
try:
del self.collection_page
except AttributeError:
pass
在MyModelAdmin
中的save_model
方法开始时,测试应该失败。你知道吗
这是Django的预期功能吗?有没有更好的办法处理?你知道吗
绝对不应该在ModelAdmin对象上设置state。它在服务器进程的生命周期内一直存在;在它上设置的任何内容都将在请求之间保留。你知道吗
你不会说你在用这个变量做什么,所以很难给出建议,告诉你如何最好地去做它;只是,不是这样。你知道吗
相关问题 更多 >
编程相关推荐