30.保存时如何将模型与当前用户关联?
假设Hero模型有个添加人字段:
added_by = models.ForeignKey(settings.AUTH_USER_MODEL,
null=True, blank=True, on_delete=models.SET_NULL)
我们希望每当从后台创建对象时,added_by该字段自动设置为当前用户。修改代码如下:
def save_model(self, request, obj, form, change):
if not obj.pk:
# 只在第一次保存时,自动保存为当前用户
obj.added_by = request.user
super().save_model(request, obj, form, change)
相反,如果你想始终保存未当前用户,则可以执行以下操作:
def save_model(self, request, obj, form, change):
obj.added_by = request.user
super().save_model(request, obj, form, change)
如果您还希望隐藏该added_by字段,使其不显示在更改表单上,则可以执行以下操作:
@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
...
exclude = ['added_by',]