我看到了许多生成唯一slug的不同方法:示例1、示例2、示例3、示例4,等等。
我想在保存一个ModelForm时创建唯一的slug。如果我的模型如下:
我希望这个对象的URL呈现为:
我想在保存一个ModelForm时创建唯一的slug。如果我的模型如下:
class Phone(models.Model):
user = models.ForeignKey(User)
slug = models.SlugField(max_length=70, unique=True)
year = models.IntegerField()
model = models.ForeignKey('Model')
series = models.ForeignKey('Series')
假设Phone
对象具有以下值(通过提交的ModelForm):
Phone.user = dude
Phone.year = 2008
Phone.model = iphone
Phone.series = 4S
我希望这个对象的URL呈现为:
http://www.mysite.com/phones/dude-2008-iphone-4S
我知道应该通过信号或重写保存方法来使用 slugify
来实现这一点。但是如果用户 dude
创建了第二个 2008 年 iPhone 4S 对象,创建唯一的 slug 的最佳方法是什么?我希望附加对象的 URL 看起来像:
http://www.mysite.com/phones/dude-2008-iphone-4S-2
并且
http://www.mysite.com/phones/dude-2008-iphone-4S-3
http://www.mysite.com/phones/dude-2008-iphone-4S-4
#...etc ...
经过谷歌搜索,似乎有多种不同的方法可以在 Django 中创建 slug,这使得在试图确定最佳实践时感到困惑。
非常感谢您对此问题的任何建议和澄清!
unique_with
和您描述的参数来实现autoslugfield,但是slug生成不正确。在这种情况下,slug由模型的名称生成,即slug为“Phone”,这不是期望的结果。也许我在我的实现中错过了什么.. 感谢任何额外的想法。 - Nick B