django-reversion 和 django-reversion-compare with User 模型

django-reversion and django-reversion-compare with User model

你好,我在添加 django-reversion 和 django-reversion-compare 模块时遇到了一些问题。

我创建了新项目,我想使用 django-reversion 跟踪 user_auth 日志更改(在使用 django-reversion 注册用户模型后我想使用 django-reversion-compare)。

from django.contrib import admin
from django.contrib.auth.models import User
from reversion.admin import VersionAdmin


@admin.register(User)
class UserModelAdmin(VersionAdmin):
pass

当我想注册模型用户时出现错误

django.contrib.admin.sites.AlreadyRegistered: The model User is already registered

如何使用 django-reversion 和 django-reversion-compare 与用户模型?

auth.User 模型已经在 django 管理中注册,这就是您看到错误的原因。为了避免它,你有两个选择:

一个。注销用户管理员,然后再次将其注册为 VersionAdmin:类似这样的事情:

from django.contrib import admin
from django.contrib.auth.models import User
from reversion.admin import VersionAdmin

admin.site.unregister(User) 
admin.site.register(User, VersionAdmin) 

乙。使用django-reversion(https://django-reversion.readthedocs.io/en/stable/api.html#registration-api)的注册API注册模型,无需修改你的admin,例如:

import reversion
from django.contrib.auth.models import User

reversion.register(User)