【问题标题】:Django - Filtering Field In DetailViewDjango - 在DetailView中过滤字段
【发布时间】:2020-07-29 20:34:21
【问题描述】:

大家好,

我一直在构建一个允许用户流式传输和下载音乐的 Django 应用程序。但是,我在艺术家个人资料页面上遇到了一个问题;我试图仅在 DetailView 中请求艺术家的歌曲,因为我将其视为博客系统。

这在 DetailView 中是否可行?还是我需要做一个过滤器?我已经在网上搜索了几天,并没有真正了解我能做什么或如何从模型中获取特定的数据字段。

任何帮助或指导将不胜感激!

class musicartist(DetailView):
model = MusicArtist
template_name = 'RS_MUSIC/artist.html'

# override context data 
def get_context_data(self, *args, **kwargs): 
    context = super(musicartist, self).get_context_data(*args, **kwargs) 
    # add extra field  
    current_band = MusicItems.objects.all().filter(artist=MusicArtist.title)[:1]
    context["songs"] = MusicItems.objects.filter(artist=MusicArtist.objects.all().filter(title=current_band)[:1])
    return context

【问题讨论】:

  • 这个DetailView 的网址是什么样的? url中一定有id/pk。

标签: django django-models django-views


【解决方案1】:

设法弄明白了。只需要以下代码:

class musicartist(DetailView):
model = MusicArtist
template_name = 'RS_MUSIC/artist.html'

def get_context_data(self, **kwargs):
    context = super(musicartist, self).get_context_data(**kwargs)
    context_related = MusicItems.objects.filter(artist=self.object.title)
    context['related'] = context_related
    return context

【讨论】:

    猜你喜欢
    • 2012-03-13
    • 2020-06-01
    • 2012-12-15
    • 2015-09-15
    • 2016-06-15
    • 2021-06-19
    • 2013-08-14
    • 2022-01-20
    • 2012-04-28
    相关资源
    最近更新 更多