2. 保存时,如何将当前的用户和模型关联起来

Hero 模型有以下在字段

  1. added_by = models.ForeignKey(settings.AUTH_USER_MODEL,
  2. null=True, blank=True, on_delete=models.SET_NULL)

当对象通过admin创建时,你需要added_by字段自动设置为当前用户。你可以这样做:

  1. def save_model(self, request, obj, form, change):
  2. if not obj.pk:
  3. # Only set added_by during the first save.
  4. obj.added_by = request.user
  5. super().save_model(request, obj, form, change)

如果你想始终保存当前用户,就可以这样做:

  1. def save_model(self, request, obj, form, change):
  2. obj.added_by = request.user
  3. super().save_model(request, obj, form, change)

如果你还想隐藏add_by字段,让它不显示在更改表单上,可以这样做:

  1. @admin.register(Hero)
  2. class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
  3. ...
  4. exclude = ['added_by',]

2. 保存时,如何将当前的用户和模型关联起来 - 图1