【问题标题】:access to another model fields with foreign key in django admin在 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 完成...
  • 你能澄清你的目标是什么,你的问题真的不清楚

标签: django foreign-keys django-admin


【解决方案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 外键。这将获得有关专辑或音乐或歌手的所有信息。或者你可以像我在音乐中那样在歌手模型中专辑外键。谢谢
  • 在你的例子中,如果你有一个有 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 我得到用户的个人资料名称,没有任何导入或更改!

【讨论】:

  • 请提供一个最小的工作示例。否则你的答案是毫无用处的。另外,请在问题和答案中检查您的正字法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 2019-09-30
  • 2018-07-17
  • 2013-06-08
  • 2012-05-20
  • 2010-10-18
  • 2022-01-07
相关资源
最近更新 更多