在django admin中使用外键访问其他模型字段

时间:2017-10-17 07:29:41

标签: django foreign-keys django-admin

我在django模型中有一个联系我们的类,使用“user_id”外键,在admin.py文件中,我想在userprofile模型“user_id”中使用带有user_id密钥的userprofile数据,例如“name”字段。 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类显示名称

2 个答案:

答案 0 :(得分:0)

通过查询的问题标题。我正在激励如何在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)

在Musics中使用foreignkey专辑。您可以根据自己的相册访问所有音乐。要在管理员中访问它们,只需导入类名并执行以下操作:

 

    admin.site.register(Album) 
    admin.site.register(Musics)

谢谢。我希望它能清除你的困惑。

答案 1 :(得分:-1)

最后我解决了它,当在userprofile模型中,user_id有“profile”related_name,在每个地方,使用user_id外键我们都有来自每个模型的所有相关字段user_id是其中的外键 你可以看到那些使用dir(“你user_id实例”)。 所以,使用user_id.profile.name我得到用户的个人资料名称,没有任何导入或更改!