0

我有一个相对简单的方法覆盖,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用户名字符串,但填充obj.last_modified_by用户 ID 字符串。我主要可以通过简单地使用request.user.username而不是 just 来解决这个问题request.user,但对我来说奇怪的是它不一致地执行此操作:

结果不一致

Carl 的用户 ID 为 1。

如果您想知道模型中的设计方式created_bylast_modified_by设计方式,它们只是CharField's(不是 ForeignKey's):

created_by          = models.CharField(blank=False, max_length=100, editable=False)
last_modified_by    = models.CharField(blank=False, max_length=100, editable=False)

为什么不一致?

4

1 回答 1

2

你自己说的。

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

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

您可能想做类似obj.created_by = request.user.username.

于 2016-02-04T13:25:36.610 回答