Django Admin:如何在同一视图中显示两个不同模型的字段?
我的网站使用 Django 的用户身份验证用户模型和自定义 UserProfile 模型来存储一些附加数据(生日等)。有没有办法在 Django 管理中创建一个视图,将 User 和 UserProfile 模型中的字段编织在一起?
我怀疑这个代码片段还不够接近,但也许它有助于说明我正在尝试做的事情:
from django.contrib import admin
from django.contrib.auth.models import User
from userprofile.models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
list_display = ('name', 'gender', 'User.email') #user.email creates the error - tried some variations here, but no luck.
admin.site.register(UserProfile, UserProfileAdmin)
错误消息:
配置不正确:UserProfileAdmin.list_display[2],“User.email”不是“UserProfileAdmin”的可调用属性或属性,也不是在模型“UserProfile”中找到的。
最终,我试图创建一个具有first & 的管理视图。用户个人资料中的姓氏和用户的电子邮件。
My site makes use of Django's User Authentication User model and a custom UserProfile model to store some additional data (birthday, etc.). Is there a way to create a view in Django admin that weaves together fields from both the User and UserProfile models?
I suspect that this code snippet is not even close, but maybe it will help illustrate what I'm trying to do:
from django.contrib import admin
from django.contrib.auth.models import User
from userprofile.models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
list_display = ('name', 'gender', 'User.email') #user.email creates the error - tried some variations here, but no luck.
admin.site.register(UserProfile, UserProfileAdmin)
Error message:
ImproperlyConfigured: UserProfileAdmin.list_display[2], 'User.email' is not a callable or an attribute of 'UserProfileAdmin' or found in the model 'UserProfile'.
Ultimately, I'm trying to create an admin view that has first & last name from UserProfile and email from User.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要显示用户电子邮件,您需要在
UserProfile
或UserProfileAdmin
上有一个方法,该方法返回UserProfile
或 UserProfileAdmin
上的电子邮件,然后将您的
list_display
更改为“相关”文档: ModelAdmin.list_display
for displaying user email you need to have a method on
UserProfile
orUserProfileAdmin
that returns the emailon UserProfile
or on UserProfileAdmin
then change your
list_display
toRelated docs: ModelAdmin.list_display
您可以尝试使用 InlineModelAdmin 显示 User 和管理视图中的 UserPofile 表单。
要在更改列表中显示用户配置文件信息,您可以创建一个新方法,将值从
UserProfile
委托给User
模型。例如,这或多或少应该有效:)
You could try using InlineModelAdmin to display both User and UserPofile forms in a admin view.
To display user profile information in change list you can create a new method that delegates the values from
UserProfile
toUser
model.For example this should work more or less :)
使用 Ashoks 的最佳答案,我制作了一个片段,简化了大量字段的此过程
Using Ashoks top answer i made snippet that simplifies this process for large number of fields