在 django admin 中使用外键访问另一个模型字段
Posted
技术标签:
【中文标题】在 django admin 中使用外键访问另一个模型字段【英文标题】:access to another model fields with foreign key in django admin 【发布时间】:2018-03-28 19:48:51 【问题描述】:我在 django 模型中有一个联系我们的类,在 admin.py 文件中使用“user_id”外键,我想使用带有 user_id 键的 userprofile 数据,例如“name”字段,在 userprofile 模型中“user_id”是foreign_key 也是,怎么办?
在models.py中:
class Ticket(models.Model):
user_id = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, editable=False, verbose_name="user")
replier_id = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name="replier")
guest_name = models.CharField(max_length=50, blank=True, null=True, editable=False)
guest_email = models.CharField(max_length=255, blank=True, null=True, editable=False)
user_phone = models.CharField(max_length=13, blank=True, null=True, editable=False)
subject = models.CharField(max_length=255, blank=True, null=True, editable=False)
message = models.TextField(editable=False)
reply = models.TextField(blank=True, null=True)
date = models.DateTimeField(auto_now=True, editable=False)
reply_date = models.DateTimeField(blank=True, null=True)
user_ip = models.GenericIPAddressField(editable=False)
在 admin.py 中
class ContactUsAdmin(admin.ModelAdmin):
actions = None
fields = ('user_name', 'user_email', 'subject', 'date', 'message', 'user_phone', 'reply')
list_display = ('user_name', 'user_email', 'subject', 'date', 'is_replied')
list_filter = ('date',)
search_fields = ['user_id__first_name', 'user_id__email', 'guest_name', 'guest_email', 'subject', 'message']
readonly_fields = ('user_name', 'user_email', 'subject', 'date', 'message', 'user_phone', 'reply_date')
我想在 admin.py 字段中显示来自 UserProfile 类的名称
【问题讨论】:
请发布您的代码。 @Selcuk 完成... 你能澄清你的目标是什么,你的问题真的不清楚 【参考方案1】: 通过查询的问题标题。我正在鼓励如何在 django 中做到这一点: class Album(models.Model):
AlbumName = models.CharField(max_length=250)
AlbumSinger = models.CharField(max_length=250)
AlbumGenre = models.CharField(max_length=250)
AlbumImage = models.FileField(null=True)
SingerImage = models.FileField(null=True)
class Musics(models.Model):
album = models.ForeignKey(Album, related_name='music')
MusicName = models.CharField(max_length=250)
MusicLength = models.CharField(max_length=250)
MusicFile = models.FileField(null=True)
在音乐中使用外键专辑。您可以根据他们的专辑访问所有音乐。要在管理员中访问它们,只需导入类名并执行以下操作:
admin.site.register(Album)
admin.site.register(Musics)
我希望它能消除你的困惑。
【讨论】:
如果歌手详细信息保存在另一个模型或表格中,如何从音乐管理文件中获取带有专辑外键的歌手字段? @farzaneh 在歌手模型中使用 Musics 外键。这将获得有关专辑或音乐或歌手的所有信息。或者你可以像我在音乐中那样在歌手模型中专辑外键。谢谢 ***.com/questions/4443190/… 在你的例子中,如果你有一个有 user_id 外键的歌手表,如果你有歌手的地址,它在 userprofile 表中,你可以得到“user_id.profile.address”它来自 userprofile 表,其中的 user_id 具有“profile”相关名称! 好吧,如果你使用 Singer 模型中的专辑作为外键会更容易。这将让您同时获得专辑、音乐和歌手!【参考方案2】:最后我解决了,当在 userprofile 模型中,user_id 有“profile”related_name,在每个地方,使用 user_id 外键,我们有来自每个模型的所有相关字段,其中 user_id 是外键 您可以使用 dir("you user_id instance") 查看那些。 所以,通过 user_id.profile.name 我得到用户的个人资料名称,没有任何导入或更改!
【讨论】:
请提供一个最小的工作示例。否则你的答案是毫无用处的。另外,请在问题和答案中检查您的正字法。以上是关于在 django admin 中使用外键访问另一个模型字段的主要内容,如果未能解决你的问题,请参考以下文章
django admin外键字段选择后如何关联显示另一个字段?