Django 管理员在尝试登录管理站点时调用 ```.save()``` 方法

Django admin calling the ```.save()``` method when trying to log in to the admin site

auth 用户模型扩展了 AbstractUser 并覆盖了 .save() 方法。该模型包含两个必填字段和唯一字段。它还在 .save() 方法中调用 .full_clean()。当管理员尝试登录时,问题就出现了。Django 抛出一个验证错误,指出这两个字段不能为空。当 .full_clean() 被注释掉时错误消失。

为什么 Django 管理员在尝试登录管理站点时调用 .save() 方法?

我希望调用 .save() 来为用户存储 last_login 字段。这也是 运行 验证的原因。

虽然这不能直接回答问题,但它提供了解决方案。

对于任何感兴趣的人,一种可能的解决方法是像这样调用 .full_clean()

if not self.is_superuser: 
    self.full_clean()