Django将登录的登录用户保存为外键

Posted

技术标签:

【中文标题】Django将登录的登录用户保存为外键【英文标题】:Django saveing logged in logged in user as ForeignKey 【发布时间】:2021-09-02 23:30:05 【问题描述】:

我有一个带有外键“log_written_by”的模型,我希望它是登录用户。

我应该如何在我的 forms.py 中将其声明为隐藏字段?

class AssetLog(models.Model):

    # Relationships
    log_written_by = models.ForeignKey("auth.User", on_delete=models.SET_NULL, blank=True, null=True)
    asset_case = models.ForeignKey("asset_app.AssetCase", on_delete=models.CASCADE)

    # Fields
    date_time_log = models.DateTimeField()
    notes = models.TextField(max_length=1024)
    created = models.DateTimeField(auto_now_add=True, editable=False)

    class Meta:
        pass

    def __str__(self):
        return str(self.pk)

    def get_absolute_url(self):
        return reverse("asset_app_AssetLog_detail", args=(self.pk,))

    def get_update_url(self):
        return reverse("asset_app_AssetLog_update", args=(self.pk,))

【问题讨论】:

【参考方案1】:

您可以执行以下操作:

class AssetLogForm(forms.ModelForm):
    class Meta:
        model = AssetLog
        fields = ('log_written_by ', '...,')
        widgets = 'log_written_by ': forms.HiddenInput()

请参阅此相关 *** 帖子 here。

【讨论】:

以上是关于Django将登录的登录用户保存为外键的主要内容,如果未能解决你的问题,请参考以下文章

无法删除用户外部登录

使用外键查询 Django 模型并获取登录用户

Django 会话表单(临时保存表单)

django使用session来保存用户登录状态

django session为啥不会重新登录

如何在 Django 的 CreateView 提交操作中保存当前登录的用户名?