[英]Django Model Admin: How to auto assign and hide created_by field with current user and display after save?
[英]Django admin model field set to current user
我有一个领域模型:
class MyModel(models.Model):
name = models.CharField(max_length=50)
created_by = models.ForeignKeyField(User)
在我的管理员中:
class MyModelAdmin(admin.ModelAdmin):
list_display= ("name",)
fields = ("name",)
在这里,添加MyModel时,我不需要admin中的created_by
。 我希望将其设置为当前用户,例如created_by = request.user
我怎样才能做到这一点?
谢谢
您已经设置了fields
以便created_by
不会以形式出现在Django admin中。
现在,您需要覆盖save_model
,并在保存新对象之前设置用户。
class MyModelAdmin(admin.ModelAdmin):
fields = ("name",)
def save_model(self, request, obj, form, change):
if not change:
# the object is being created, so set the user
obj.created_by = request.user
obj.save()
为此,请覆盖save_model
方法,并将created_by
字段设置为当前用户。
class MyModelAdmin(admin.ModelAdmin):
list_display= ("name",)
fields = ("name",)
def save_model(self, request, obj, form, change):
if not change:
# can use this condition also to set 'created_by'
# if not getattr(obj, 'created_by', None):
obj.created_by = request.user
obj.save()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.