Django 1.11 - 有没有办法合并从 models.Model 到 auth.models 的字段?

Django 1.11 - is there a way to combine fields from models.Model to auth.models?

我最终的目标是将 所有 用户(来自 auth.models)的列表与来自另一个模型(model.Model).这样做的最佳方法是什么?

我的代码:

survey/models/response.py

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

class Response(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, null=True, blank=True)

在 admin.py 中,我可以创建一个自定义用户 class,它列出所有注册用户的用户名,如下所示:

survey/admin.py

from django.contrib.auth.models import User

admin.site.unregister(User)

class UserAdmin(admin.ModelAdmin):
    list_display = ('username',)

admin.site.register(User, UserAdmin)

本质上我想将 UserAdmin 扩展为 list_display = ('username', 'created') - 用户名 来自 auth.modelscreated 来自 models.Model.

目前,我可以在 admin.py 中创建一个 class,向我显示已提交 回复的所有用户的列表 。问题是,如果您有 200 个用户,从所有用户列表中查看谁没有 提交比只列出已提交响应的用户更有用。

您可以编写一个函数来获取相关数据,以便您在管理列表页面中显示。

在你的admin.py

from django.contrib.auth.models import User

admin.site.unregister(User)

class UserAdmin(admin.ModelAdmin):
    list_display = ('username', 'latest_response')

    def latest_response(self, obj):
        return obj.response_set.latest('created')  # Or any other logic you want to apply here to return a string or boolean that can be shown on the admin

admin.site.register(User, UserAdmin)