存储对通过Django admin修改数据的用户的引用

存储对通过Django admin修改数据的用户的引用,django,python-3.x,django-admin,Django,Python 3.x,Django Admin,我想存储对通过Django Admin修改信息的用户的引用。基本上,我想知道是谁做了改变: 例如: class Calibrations(models.Model): code = models.CharField(max_length=30) #Some reference to the user that made the change has to be stored responsable_user = models.PositiveIntegerField()

我想存储对通过Django Admin修改信息的用户的引用。基本上,我想知道是谁做了改变:

例如:

class Calibrations(models.Model):
    code = models.CharField(max_length=30)

    #Some reference to the user that made the change has to be stored
    responsable_user = models.PositiveIntegerField() #An id?

    def save(self, *args, **kwargs):
        self.responsable_user = get_current_loggedin_user().id
        super().save()

有没有办法将此用户引用存储在模型上?或者我可以用更好的方法来解决这个问题?一般方法是使用django的内置用户模型作为模型中的外键,例如:

#models.py
从django.contrib.auth.models导入用户
类别校准(型号.型号):
代码=models.CharField(最大长度=30)
负责的用户=models.ForeignKey(用户,on\u delete=models.CASCADE)
然后,您可以通过以下方式创建并过滤
校准对象:

#views.py
def创建_视图(请求):
校准=型号。校准()
calibrations.responsible_user=request.user
def过滤器视图(请求):
校准=模型.校准.对象.过滤器(责任用户=请求用户)

一般方法是使用django的内置用户模型作为模型中的外键,例如:

#models.py
从django.contrib.auth.models导入用户
类别校准(型号.型号):
代码=models.CharField(最大长度=30)
负责的用户=models.ForeignKey(用户,on\u delete=models.CASCADE)
然后,您可以通过以下方式创建并过滤
校准对象:

#views.py
def创建_视图(请求):
校准=型号。校准()
calibrations.responsible_user=request.user
def过滤器视图(请求):
校准=模型.校准.对象.过滤器(责任用户=请求用户)

也许你可以这样做。首先创建FK到用户模型

from django.contrib.auth import get_user_model


class Calibrations(models.Model):
    code = models.CharField(max_length=30)
    responsable_user = models.ForeignKey(get_user_model(), on_delete=models.DO_NOTHING, null=True, default=None)
然后为
校准
模型重写admin类的方法:

class CalibrationsAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.responsable_user = request.user
        super().save_model(request, obj, form, change)

也许你可以这样做。首先创建FK到用户模型

from django.contrib.auth import get_user_model


class Calibrations(models.Model):
    code = models.CharField(max_length=30)
    responsable_user = models.ForeignKey(get_user_model(), on_delete=models.DO_NOTHING, null=True, default=None)
然后为
校准
模型重写admin类的方法:

class CalibrationsAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.responsable_user = request.user
        super().save_model(request, obj, form, change)