django-reversion 和 django-reversion-compare 与用户模型

2 python django django-reversion

您好,我在添加 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
Run Code Online (Sandbox Code Playgroud)

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

django.contrib.admin.sites.AlreadyRegistered: The model User is already registered
Run Code Online (Sandbox Code Playgroud)

如何将 django-reversion 和 django-reversion-compare 与 User 模型一起使用?

Ser*_*eim 6

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

A. 取消注册用户管理员,然后将其重新注册为 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) 
Run Code Online (Sandbox Code Playgroud)

B. 使用 django-reversion 的注册接口(https://django-reversion.readthedocs.io/en/stable/api.html#registration-api)注册模型,无需修改管理员,例如:

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

reversion.register(User)
Run Code Online (Sandbox Code Playgroud)