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

2022-01-25 00:00:00 python django django-admin

问题描述

我正在尝试让 Django 管理界面显示有关我的个人资料的信息.它显示我的所有用户,但没有个人资料信息.我不太确定如何让它工作.

I'm trying to get the Django Admin interface to display information about my profile. It displays all of my users but no profile information. I'm not quite sure how to get it to work.

我在谷歌快速搜索后找到了这段代码:

I found this code after a quick google search:

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)

但是,我认为它不起作用.当我登录到管理页面时,我会看到用户、组和站点.我单击用户",我看到了我所有用户的列表,但没有任何个人资料的指示.单击用户会显示有关该用户的信息,但仍然没有个人资料信息.

However, I don't think that it worked. When I log into the admin page, I see Users, Groups, and Sites. I click Users and I see a list of all of my Users, but no indication of any profile. Clicking on a user shows me info about that user, but still no profile information.

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

If it will help, here is my model declaration:

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 中.尝试在你的内联中添加一个尾随逗号——如果没有它,有些东西会中断.

I can't see exactly what's wrong, but here's a slightly simpler example that I know works. Put this is any working admin.py. Try adding a trailing comma to your inline-- some things break without it.

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)

相关文章