如果我有一个名为Object 1
的对象,我想get()
该对象,但我试图用一个名字object-1
来获取它,有没有办法做这个?类似的东西:
Model.objects.get(name__slugify = slugifiedname)
如果可能的话,我想避免在模型中添加额外的slug字段。
答案 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:否