从Django管理员创建对象时如何将当前登录的用户附加到对象 [英] How to attach current logged in user to object when object is created from django admin
问题描述
我正在一个网站上工作,该网站的应用程序具有名为 Members
的类,该字段与 django.contrib.auth.models
中的内置User类相关看起来像
I'm working on website whose an app which has class called Members
whose a field that is related to the builtin User class from django.contrib.auth.models
and it looks like
class Members(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
member_image = models.ImageField(upload_to='unknown')
member_position = models.CharField(max_length=255)
...
因此,如您所见,当我将 member_image
添加为用户时,我还必须选择 user 对我来说很有意义,因为我想检测哪个用户已登录并将其ID作为默认参数传递喜欢
So as you can see when I'm adding member_image
as a user I have also to select the user which doesn't make sense to me because I want to detect which user is logged in and pass his/her id as default parameter
like
class Members(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, default=request.user.id)
,然后在管理面板中删除用户字段,如
and after remove the user field in the admin panel like
class MembersAdmin(admin.ModelAdmin):
fields = ('member_image', 'member_position', ...)
因此,如果未选择用户字段,它将默认设置已登录的user_id
so that if the user field doesn't selected it will set the logged in user_id by default
但是无法从 views.py
中访问 request
.
那么我将如何实现这一目标我也尝试了以下答案
so how will I achieve this I also tried the following answers
但还是不明白
推荐答案
修改MembersAdmin save_model
方法,然后在保存之前将request.user附加到对象上.
Modify MembersAdmin save_model
method and attach request.user to the object prior to saving.
class MembersAdmin(admin.ModelAdmin):
fields = ('member_image', 'member_position', ...)
def save_model(self, request, obj, form, change):
obj.user = request.user
super().save_model(request, obj, form, change)
这篇关于从Django管理员创建对象时如何将当前登录的用户附加到对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!