在Django admin中,要将request.user作为内联模型的默认值,可以通过重写admin.ModelAdmin类的get_form方法来实现。具体步骤如下:
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
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())
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
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
这样,当在Django admin中创建或编辑用户时,request.user将作为内联模型的默认值。
领取专属 10元无门槛券
手把手带您无忧上云