首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django Model Admin:如何自动分配和隐藏当前用户的created_by字段,并在保存后显示?

Django Model Admin是Django框架中的一个组件,用于管理和展示数据库模型的后台管理界面。在使用Django Model Admin时,可以通过自定义ModelAdmin类来实现自动分配和隐藏当前用户的created_by字段,并在保存后显示。

首先,需要在模型类中定义created_by字段,并将其设置为可选字段(null=True)。这样可以在保存模型实例时,自动将当前用户的信息赋值给created_by字段。

代码语言:txt
复制
from django.db import models
from django.contrib.auth.models import User

class MyModel(models.Model):
    # 其他字段...
    created_by = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)

接下来,在ModelAdmin类中重写get_form方法,通过request.user获取当前用户,并将其传递给表单类。这样在后台管理界面中创建或编辑模型实例时,表单类就可以获取到当前用户的信息。

代码语言:txt
复制
from django.contrib import admin

class MyModelAdmin(admin.ModelAdmin):
    def get_form(self, request, obj=None, **kwargs):
        form = super().get_form(request, obj, **kwargs)
        form.current_user = request.user
        return form

然后,在表单类中重写save方法,将当前用户的信息赋值给created_by字段。

代码语言:txt
复制
from django import forms

class MyModelForm(forms.ModelForm):
    def save(self, commit=True):
        instance = super().save(commit=False)
        instance.created_by = self.current_user
        if commit:
            instance.save()
        return instance

最后,在ModelAdmin类中指定自定义的表单类。

代码语言:txt
复制
class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm

通过以上步骤,就可以实现自动分配和隐藏当前用户的created_by字段,并在保存后显示。在应用场景方面,这个功能适用于需要记录模型实例创建者信息的情况,例如博客文章、评论等。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb_mysql
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai_services
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券