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

Django admin -如何添加request.user作为内联模型的默认值?

在Django admin中,要将request.user作为内联模型的默认值,可以通过重写admin.ModelAdmin类的get_form方法来实现。具体步骤如下:

  1. 创建一个admin.py文件,并导入相关模块:
代码语言:txt
复制
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django import forms
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django import forms
  1. 创建一个自定义的表单类,继承自UserChangeForm,并添加一个新的字段:
代码语言:txt
复制
class MyUserChangeForm(UserChangeForm):
    class Meta(UserChangeForm.Meta):
        model = User

    def __init__(self, *args, **kwargs):
        super(MyUserChangeForm, self).__init__(*args, **kwargs)
        self.fields['request_user'] = forms.CharField(required=False, widget=forms.HiddenInput())
  1. 创建一个自定义的UserAdmin类,继承自BaseUserAdmin,并重写get_form方法:
代码语言:txt
复制
class MyUserAdmin(BaseUserAdmin):
    form = MyUserChangeForm

    def get_form(self, request, obj=None, **kwargs):
        form = super(MyUserAdmin, self).get_form(request, obj, **kwargs)
        form.request_user = request.user
        return form
  1. 注册自定义的UserAdmin类:
代码语言:txt
复制
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

这样,当在Django admin中创建或编辑用户时,request.user将作为内联模型的默认值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券