Django request.user不一致

时间:2014-06-27 22:01:50

标签: python django python-2.7 django-1.6

我有一个相对简单的覆盖save_model方法,如下所示:

def save_model(self, request, obj, form, change):
    if not change:
        obj.created_by = request.user
        obj.last_modified_by = request.user
    else:
        obj.last_modified_by = request.user
    obj.save()

创建新记录(not change)时,它会使用用户名字符串填充obj.created_by,但使用用户ID字符串填充obj.last_modified_by。我可以通过简单地使用request.user.username而不仅仅是request.user来解决这个问题,但对我来说这很不一致:它不一致:

inconsistent results

Carl的用户ID为1。

如果您想知道模型中如何设计created_bylast_modified_by,它们只是CharField的(不是 {{1} }的):

ForeignKey

为什么不一致?

1 个答案:

答案 0 :(得分:2)

你自己说的。

  

如果您想知道如何在模型中设计created_by和last_modified_by,它们只是CharField(而不是ForeignKey' s):

但是request.user是一个实际的用户实例(不是CharField)。所以你用错误的东西设置字段。

您可能希望执行obj.created_by = request.user.username之类的操作。