ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 在Django中生成独特的slug

2019-06-25 18:42:27  阅读:332  来源: 互联网

标签:python django unique slug modelform


我已经看到了各种不同的方法来生成独特的slu :: Ex. 1,Ex.2,Ex. 3,Ex. 4等.

我想在保存ModelForm时创建独特的slu ..如果我的模型如下:

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或者使用save方法来实现这一点.但是如果用户花花公子创建了第二个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,这在尝试找出最佳实践时一直令人困惑.

非常感谢您对此问题的任何建议和澄清!

解决方法:

我最终使用This Django Snippet来覆盖我的models.py中的Phone的保存方法:

def save(self, **kwargs):
    slug_str = "%s %s %s %s" % (self.user, self.year, self.model, self.series)
    unique_slugify(self, slug_str)
    super(Phone, self).save()

但感谢jpic的贡献.

标签:python,django,unique,slug,modelform
来源: https://codeday.me/bug/20190625/1288440.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有