【问题标题】:How to save user that created and modified a record in django admin site?如何保存在 django 管理站点中创建和修改记录的用户?
【发布时间】:2021-06-10 18:42:59
【问题描述】:

我的 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

【问题讨论】:

    标签: python django django-models django-admin


    【解决方案1】:

    您可以覆盖序列化程序中的创建和更新方法。在调用超类更新和创建方法之前的方法中,可以在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
    

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多