我的 django 应用程序中有一个 ReportModel,其中有 2 个字段 create_user (代表创建报告的用户)和 write_user (代表最后修改报告的用户)。我想根据登录 django 管理站点的用户自动保存这两个字段。我怎么做? 这是模型的定义
class ReportModel(models.Model):
name = models.CharField(verbose_name=_("Nombre"), max_length=50, blank=False, null=False)
location = models.PointField(verbose_name=_("Localización"), srid=4326, blank=False, null=False)
report_type_id = models.ForeignKey("ReportTypeModel", verbose_name=_("Tipo"),
blank=True, null=True, on_delete=models.SET_NULL,
related_name="reports")
start_date = models.DateField(verbose_name=_("Fecha inicio"))
end_date = models.DateField(verbose_name=_("Fecha fin"))
create_user = models.ForeignKey(User, on_delete=models.CASCADE,
related_name='+', verbose_name=_('Creado por'), editable=False, null=True, blank=True)
write_user = models.ForeignKey(User, on_delete=models.CASCADE,
related_name='+', verbose_name=_('Modificado por'), editable=False, null=True, blank=True)
def __str__(self):
return self.name
最佳答案
您可以覆盖序列化程序中的创建和更新方法。在调用父类(super class) update 和 create 方法之前的方法中,您可以从 request.user 中自行添加字段
类似的东西
def create(self, validated_data):
"""
Overriding the default create method of the Model serializer.
:param validated_data: data containing all the details of your model
:return: returns a successfully created record
"""
validated_data.update({"create_user": request.user})
# call super class create method here by passing the modified validated_data
return student
关于python - 如何保存在 django 管理站点中创建和修改记录的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67926861/