首页 > 解决方案 > Django将登录的登录用户保存为ForeignKey

问题描述

我有一个带有外键“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,))

标签: djangoforeign-keyshidden-field

解决方案


您可以执行以下操作:

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

在此处查看相关的 StackOverflow 帖子。


推荐阅读