如何在django中编写一个基于字段获取object_list的视图?

时间:2011-12-03 22:40:10

标签: django django-views

我有一个简单的标签模型和一个简单的项目模型。

在项目模型中,我有一个标签模型m2m。

我想用标签返回所有项目。我快到了。

现在,下面的视图返回基数为10的int()的无效文字:'cheap'

所以,它有正确的slug,它正在进行查询,但它正在尝试根据m2m标记的id获取项目列表。

任何建议都非常感谢。

我的标签型号: class Tag(models.Model):

"""
A basic tag model for projects
"""
name = models.CharField(max_length=100, unique=True)
slug = models.CharField(max_length=100)
description = models.TextField(blank=True)

class Meta:
    ordering = ('name',)
    verbose_name = _('Tag')
    verbose_name_plural = _('Tags')

def __unicode__(self):
    return self.name

@models.permalink
def get_url_path(self):
    return ('TagDetail', (), {'slug': self.slug})

我的网址:

# tags/<slug>/ The detail view for an archived project
url(regex=r'^tags/(?P<slug>[\w-]+)/$',
    view=TagDetail.as_view(),
    name='tag_detail',
),

我的观点我想弄明白:

class TagDetail(ListView):
""" Get all projects for a tag """

template_name = "projects/TagDetail.html"

def get_queryset(self):
    tags = get_list_or_404(Project, tags=self.kwargs['slug'], displayed=True)

paginate_by = 10

@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
    return super(TagDetail, self).dispatch(*args, **kwargs)

1 个答案:

答案 0 :(得分:1)

假设您的项目模型看起来像这样

class Project( models.Model ):
  tags=models.ManyToManyField( Tag )

匹配标签的slug

def get_queryset( self ):
  return get_list_or_404(Project, tags__slug=self.kwargs['slug'], displayed=True)

唯一的变化是tags__slug