Cheers
Mike
TL;DR
Here is all the admin code which works without error if
formfield_for_manytomany()is commented out ...
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from django.db import models
from common.models import UserProfile
from common.utils import (
is_sharedsds, user_sharedsds_admin, userprofile_sharedsds_admin,
)
from common.widgets import CommonFilteredSelectMultiple
class CommonUserAdmin(UserAdmin):
def formfield_for_manytomany(self, db_field, request, **kwargs):
pass
#if db_field.name == "groups":
# formfield_overrides = {
# models.ManyToManyField: {'widget':
CommonFilteredSelectMultiple},
# }
model = get_user_model()
extra = 0
readonly_fields = [
"last_login",
"is_staff",
"is_active",
"date_joined",
"groups",
]
# user_sharedsds_admin() makes some of the above r/o fields r/w
only for sharedsds members
get_readonly_fields = user_sharedsds_admin
fieldsets = [
(
"More detail",
{
"description": "Server date/times are UTC rather than
local time<hr/>",
"classes": ("collapse",),
"fields": (
"password",
"last_login",
"username",
"first_name",
"last_name",
"email",
"is_staff",
"is_active",
"groups",
"date_joined",
),
},
),
]
class UserProfileInline(admin.StackedInline):
def has_add_permission(self, request=None, obj=None):
return False
def has_delete_permission(self, request=None, obj=None):
return False
model = UserProfile
extra = 0
verbose_name_plural = "Profile"
readonly_fields = ("company", "modified",)
# userprofile_sharedsds_admin() makes some of the above r/o
fields r/w for sharedsds members
get_readonly_fields = userprofile_sharedsds_admin
fieldsets = (
(
"Cellphone, Company",
{
"classes": ("collapse",),
"fields": ("cellphone", "company",),
},
),
(
"Preferences",
{
"classes": ("collapse",),
"fields": (
"code_preference",
"subsections",
"licensed_data",
"open_data",
"ingredient_data",
"modified",
),
},
),
)
inlines = [
UserProfileInline,
]
admin.site.register(get_user_model(), CommonUserAdmin)