Django 1.11 - 有没有办法将models.Model和auth.models中的字段组合在一起?

时间:2018-01-26 12:09:06

标签: django admin models

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

我的代码:

调查/模型/ 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中,我可以创建一个自定义用户类,列出所有注册用户'像这样的用户名:

调查/ 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 =('用户名','已创建' - 用户名来自 auth.models 已创建来自 models.Model

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

1 个答案:

答案 0 :(得分:2)

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

在您的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)