我正在尝试使用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
在save_model
的{{1}}方法的开头,测试失败了。
这是Django的预期功能吗?有没有更好的方法来处理它?</ p>
答案 0 :(得分:2)
您绝对不应该在ModelAdmin对象上设置状态。它存在于服务器进程的整个生命周期中;任何设置都会在请求中保留。
你不能说出你对这个变量做了什么,所以很难就如何最好地做任何事情给出建议;只是,不是这样。