Python 测试在save_模型中使用request.user的Django模型
我有一个Django模型,它覆盖Python 测试在save_模型中使用request.user的Django模型,python,django,django-models,Python,Django,Django Models,我有一个Django模型,它覆盖save\u model,以便在保存时自动将当前经过身份验证的用户保存到一个字段中 问题是,我如何在单元测试中测试这个模型的创建,而不必经过视图 模型: class SomeClass(models.Model): def save_model(self, request, obj, form, change): self.prevent_update() if not obj.pk: # Only
save\u model
,以便在保存时自动将当前经过身份验证的用户保存到一个字段中
问题是,我如何在单元测试中测试这个模型的创建,而不必经过视图
模型:
class SomeClass(models.Model):
def save_model(self, request, obj, form, change):
self.prevent_update()
if not obj.pk:
# Only set added_by during the first save.
obj.created = request.user
super().save_model(request, obj, form, change)
测试只是想在做其他事情之前设置SomeClass
class SomeClassTestCase(TestCase):
def setUp(self):
self.assertTrue(request.user)
SomeClass.objects.create(name="abc")
我知道有一个请求被自动设置,因为请求。用户
不会因为请求
为无
而失败;相反,查询约束失败,因为用户为null。如何对似乎已传递到save\u model
或者,我知道我可以使用
RequestFactory
设置请求并生成用户。在这种情况下,我如何将其引入测试中,以便SomeClass.objects.create
实际看到它 多亏了这些评论,我意识到我复制粘贴得不好,把保存模型
放到了一个模型中。这和我对Django的业余能力造成了各种各样的混乱。因此,request.user
没有失败是因为它从未被调用过
我现在正确地覆盖了模型中的
save
方法和管理中的save\u model
方法,该方法将正确的详细信息传递给模型以进行保存。由于这些注释,我意识到我复制和粘贴得不好,将save\u model
放置到模型中。这和我对Django的业余能力造成了各种各样的混乱。因此,request.user
没有失败是因为它从未被调用过
我现在正确地覆盖了模型中的
save
方法和管理中的save\u model
方法,该方法将正确的细节传递给模型进行保存。save\u model
是针对ModelAdmin
的,而不是针对model
的<代码>模型是请求不知道的。请参见保存\u模型
是针对模型管理员
,而不是针对模型
<代码>型号s不受请求影响。请参阅