Django - 用户、用户配置文件和管理员
问题描述
我正在尝试让 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)
相关文章