JPC*_*JPC 10 python django django-admin
我正在尝试使用Django Admin界面来显示有关我的个人资料的信息.它显示我的所有用户但没有配置文件信息.我不太清楚如何让它发挥作用.
我在快速谷歌搜索后找到了这段代码:
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)
Run Code Online (Sandbox Code Playgroud)
但是,我认为它不起作用.当我登录管理页面时,我会看到用户,组和站点.我单击用户,我看到所有用户的列表,但没有任何配置文件的指示.单击用户会显示有关该用户的信息,但仍然没有配置文件信息.
如果它会有所帮助,这是我的模型声明:
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)
Run Code Online (Sandbox Code Playgroud)
我的注册码:
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))
Run Code Online (Sandbox Code Playgroud)
C. *_*ppa 25
我看不出确切的错误,但这是一个我知道有效的例子.把这个任何工作的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)
Run Code Online (Sandbox Code Playgroud)
这不完全是您的问题的答案,但根据Django Admin文档,您可以在User"表"中显示来自UserProfile的信息.你可以把它变成可搜索的.
这看起来像这样(修改C. Alan Zoppa的回答):
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',)
Run Code Online (Sandbox Code Playgroud)
如果不再调用您的配置文件类,则搜索可能会出现问题UserProfile.
| 归档时间: |
|
| 查看次数: |
15404 次 |
| 最近记录: |