Django - Slugify获取查找

时间:2011-04-19 13:42:53

标签: django django-queryset slug

如果我有一个名为Object 1的对象,我想get()该对象,但我试图用一个名字object-1来获取它,有没有办法做这个?类似的东西:

Model.objects.get(name__slugify = slugifiedname)

如果可能的话,我想避免在模型中添加额外的slug字段。

2 个答案:

答案 0 :(得分:5)

你需要对'name'字段的值进行一些限制,只允许[-A-Za-z] +,但你可以这样做:

def my_request(request, name):
    un_slugified_name = name.replace('-', '')
    objects = MyModel.objects.get(name=unslugified_name)

但是,您通过查询字符串传递的名称必须与数据库中的名称完全相同。因人而异。我的建议,使用SlugField:)

答案 1 :(得分:2)

Slugify是一个Python函数。为了实现您的目标,Django必须获取完整的数据库(至少包含pk和name字段),计算每行的slug并将其与给定参数进行比较。这将是非常不合理的,所以:

TLDR:否