python - Django admin 仅为登录用户保存和显示数据
问题描述
在我的 django 管理项目中,我必须保存然后显示不同用户的数据,我希望当我自动保存字段用户时获取登录的用户值,当我重新登录时,我只能看到为我的用户保存的数据。我有这种models.py:
class TheLinks(models.Model):
lk_name = models.CharField(max_length=20)
def __str__(self):
return self.lk_name
class UserComLinks(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="User")
l_id = models.ForeignKey(TheLinks, on_delete=models.CASCADE, verbose_name="Portal")
l_link = models.CharField(max_length=100)
def __str__(self):
return str(self.l_id)
现在,如果我运行我的 django 管理员,我会看到以下表单:
好吧,首先我会隐藏用户名字段并让我的模型使用当前登录的用户自动保存这些数据,然后我会在用户登录时只能看到 hos 数据。我尝试以这种方式管理 admin.py:
管理员.py
class UserComLinksAdmin(admin.ModelAdmin):
list_display = ('l_id', 'l_link')
def changeform_view(self, request, obj_id, form_url, extra_context=None):
try:
l_mod = UserComLink.objects.latest('id')
except Exception:
l_mod = None
extra_context = {
'lmod': l_mod,
}
return super(UserComLinksAdmin, self).changeform_view(request, obj_id, form_url, extra_context=extra_context)
但没有任何改变。
有人可以帮我吗?
非常感谢提前
解决方案
您可以从管理表单中排除该user
字段并在保存之前设置当前用户的值:
class UserComLinksAdmin(admin.ModelAdmin):
list_display = ('l_id', 'l_link')
exclude = ('user',)
def save_form(self, request, form, change):
obj = super().save_form(request, form, change)
if not change:
obj.user = request.user
return obj
推荐阅读
- c - pthread_join 后局部变量值不正确
- javascript - Angular - 当表单无效时在提交时显示错误消息
- google-cloud-platform - Google Cloud Scheduler:为什么云功能运行成功但记录器仍然显示错误?
- javascript - Map.forEach 创建的 Promise 在第一次处理拒绝时停止
- c++ - 使用 std::ranges::min 在 std::map 上投影
- vba - VBA代码循环通过开始和结束日期,只粘贴工作日
- c++ - 为什么从分配给变量的 istream_iterator 读取不起作用?
- android - 将(图像、视频、文档)等文件上传到我的驱动器文件夹
- ios - 如果循环,使用单独的 Swift 文件更改 UIButton 上的 UIImage
- sql - 选择不同行上具有 2 个属性的已售产品数量