Python 测试在save_模型中使用request.user的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

我有一个Django模型,它覆盖
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不受请求影响。请参阅