django slug没有在模型中定义这个

时间:2014-08-24 15:12:25

标签: django django-views slug

我有记录的数据库,我喜欢使用" title"记录为文章的链接,但问题是模型slug没有定义。我不完全确定我是否可以使用urls.py和views.py来生成文章的url路径。 到目前为止,这是我的代码。

class ArticleView(ListView):
    template_name = 'article.html'

    def get_queryset(self):
        article = self.kwargs.get('feed_title', None)
        return article

    def get_context_data(self, request, **kwargs):
        context = super(ArticleView, self).get(request, **kwargs)
        return context

和我的网址:

url(r'^(?P<article>[-\w]+)/$', ArticleView.as_view(), name='article')

2 个答案:

答案 0 :(得分:1)

我解决了我的问题,我按照@Gary的建议将slugfield添加到我的模型中,然后我运行南迁移:

python manage.py schemamigration Myapp --auto
python manage.py migrate Myapp

然后为我所有现有数据创建slug字段条目。我用过Django shell:

python manage.py shell
from django.template.defaultfilters import slugify
from MyApp.models import MyModel

首先只是为了测试:

>>> for obj in MyModel.objects.all():
...     obj.slug = slugify(obj.title)
...     print(obj.slug)

然后生成slug并保存:

>>> for obj in MyModel.objects.all():
...     obj.slug = slugify(obj.title)
...     obj.save()
... 
>>>

有了这个,我创建了超过3000个条目的slug-url。现在,我将重点介绍如何创建模板并使用url作为文章标题来提供每个条目。

答案 1 :(得分:0)

只需将slugfield添加到模型中,并指定从名称字段计算的默认值。如果您正在使用South进行迁移(如果您不是,那么它应该是!),那么它将在迁移现有实例时使用默认值。 Django的slugify功能对于向现有文章添加slug也很有用。