Python 使用save_model保存当前用户

Python 使用save_model保存当前用户,python,django,Python,Django,我试图通过在post_save中创建新对象来保存当前用户。这就是模型 class SourceHistory(models.Model): source = models.ForeignKey(Source, verbose_name=u'Источник', null=False, blank=False) editor = models.ForeignKey(User, verbose_name=u'Пользователь', null=True, blank=True)

我试图通过在post_save中创建新对象来保存当前用户。这就是模型

class SourceHistory(models.Model):
    source = models.ForeignKey(Source, verbose_name=u'Источник', null=False, blank=False)
    editor = models.ForeignKey(User, verbose_name=u'Пользователь', null=True, blank=True)
在admin.py中

@admin.register(SourceHistory)
class SourceHistoryAdmin(admin.ModelAdmin):
    list_display = ('source', 'editor')

    def save_model(self, request, obj, form, change):
        obj.editor = request.user
        obj.save()
以及创建一个新对象

@receiver(post_save, sender=Source)
def source_save_history(sender, **kwargs):
    source = kwargs.get('instance')
    for f in source.memorized_fields:
        if source.__getattribute__(f) != source.memorized_fields[f]:
            sh = SourceHistory.objects.create(
                source=source
            )

因此,使用这种方式,新对象中的“编辑器”字段为空。如何使用当前用户创建SourceHistory对象?

您不能在post_save()中执行此操作,只能在请求中确定用户。

哦:(有没有一种方法可以在没有请求的情况下保存当前用户?您需要在视图中执行此操作。或者,覆盖
Source
模型的
save
方法,创建
SourceHistory
并在
save
方法的
kwargs
中提供
user
实例。