Python Django-用户、用户配置文件和管理员

Python Django-用户、用户配置文件和管理员,python,django,django-admin,Python,Django,Django Admin,我正试图让Django管理界面显示有关我的个人资料的信息。它显示我的所有用户,但不显示个人资料信息。我不太清楚如何让它工作 我在谷歌快速搜索后发现了以下代码: from auth.models import UserProfile from django.contrib import admin from django.contrib.auth.models import User from django.contrib.auth.admin import UserAdmin admin.si

我正试图让Django管理界面显示有关我的个人资料的信息。它显示我的所有用户,但不显示个人资料信息。我不太清楚如何让它工作

我在谷歌快速搜索后发现了以下代码:

from auth.models import UserProfile
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin

admin.site.unregister(User)

class UserProfileInline(admin.StackedInline):
    model = UserProfile

class UserProfileAdmin(UserAdmin):
    inlines = [UserProfileInline]

admin.site.register(User, UserProfileAdmin)
然而,我认为它不起作用。当我登录到管理页面时,我会看到用户、组和站点。我点击用户,我看到了我所有用户的列表,但没有显示任何配置文件。单击某个用户会向我显示该用户的信息,但仍然没有配置文件信息

如果有帮助,以下是我的模型声明:

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

class UserProfile(models.Model):
    company = models.CharField(max_length=30)
    user = models.ForeignKey(User, unique=True)
以及我的注册码:

def register(request):
    if request.method == 'POST':
        uf = UserForm(request.POST)
        upf = UserProfileForm(request.POST)
        if uf.is_valid() and upf.is_valid():
            user = uf.save()
            userprofile = upf.save(commit=False)#need to get the user profile object first
            userprofile.user = user #then set the user to user
            userprofile.save() #then save to the database
            return HttpResponseRedirect('/auth/login/')
    else:
        uf = UserForm()
        upf = UserProfileForm()
    return render_to_response('register.html', dict(userform=uf,userprofileform=upf),context_instance=RequestContext(request))

我看不出到底出了什么问题,但我知道这里有一个稍微简单一点的例子。这是任何正在工作的admin.py。尝试在内联中添加一个尾随逗号——如果没有它,有些东西会断开

from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from accounts.models import UserProfile

admin.site.unregister(User)

class UserProfileInline(admin.StackedInline):
    model = UserProfile

class UserProfileAdmin(UserAdmin):
    inlines = [ UserProfileInline, ]

admin.site.register(User, UserProfileAdmin)

这并不完全是对您的问题的回答,但根据,您可以在用户“表”中显示UserProfile中的信息。你可以让它成为可搜索的

看起来是这样的(修改C.Alan Zoppa的答案):


但是,如果您的profile类不再被称为
UserProfile

那么您可能会遇到搜索问题,缺少的逗号应该无关紧要。我怀疑问题在于您添加了一个新的
admin.py
,但开发服务器没有识别它。如果重新启动开发服务器,它将看到新文件。

您是否将管理员代码放在
admin.py
的新应用程序包中,并将其添加到
INSTALLED_APPS
?管理员代码在我的“auth”应用程序中的admin.py中。auth在已安装的应用程序中。我还正确设置了身份验证配置文件模块。身份验证似乎是一个坏名字,因为您可能会有冲突。也许我会更改它,但现在,所有的身份验证功能都可以正常工作,只是管理员不能profile@JPC这不重要,我知道。你确定你的管理员被抓了吗?我想它起作用了。我现在可以看到配置文件,当我点击一个用户!哇,谢谢。一个共同的想法如何添加用户配置文件信息到用户表中,这样我就可以按它排序/按它搜索?就像管理员应用程序中的排序一样?这可能是可能的,但您可能不得不做一些不可取的事情,比如对用户模型进行子类化。你最好尝试在模板中对其进行修补。回答得很好。非常感谢。我只是想你包括从django.contrib.auth.models导入的用户
class UserProfileAdmin(UserAdmin):
    inlines = [ UserProfileInline, ]
    def company(self, obj):
        try:
            return obj.get_profile().company
        except UserProfile.DoesNotExist:
            return ''
    list_display = UserAdmin.list_display + ('company',)
    search_fields = UserAdmin.search_fields + ('userprofile__company',)