Django Model Admin是Django框架中的一个组件,用于管理和展示数据库模型的后台管理界面。在使用Django Model Admin时,可以通过自定义ModelAdmin类来实现自动分配和隐藏当前用户的created_by字段,并在保存后显示。
首先,需要在模型类中定义created_by字段,并将其设置为可选字段(null=True)。这样可以在保存模型实例时,自动将当前用户的信息赋值给created_by字段。
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获取当前用户,并将其传递给表单类。这样在后台管理界面中创建或编辑模型实例时,表单类就可以获取到当前用户的信息。
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字段。
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类中指定自定义的表单类。
class MyModelAdmin(admin.ModelAdmin):
form = MyModelForm
通过以上步骤,就可以实现自动分配和隐藏当前用户的created_by字段,并在保存后显示。在应用场景方面,这个功能适用于需要记录模型实例创建者信息的情况,例如博客文章、评论等。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云