我正在尝试在 Django 中创建一个独特的 slug,以便我可以通过如下网址访问帖子: http ://www.example.com/buy-a-new-bike_Boston-MA-02111_2
相关型号:
class ZipCode(models.Model):
zipcode = models.CharField(max_length=5)
city = models.CharField(max_length=64)
statecode = models.CharField(max_length=32)
class Need(models.Model):
title = models.CharField(max_length=50)
us_zip = models.CharField(max_length=5)
slug = ?????
def get_city():
zip = ZipCode.objects.get(zipcode=self.us_zip)
city = "%s, %s %s" % (zip.city, zip.statecode, zip.zipcode)
return city
示例 ZipCode 记录:
- 邮政编码 = "02111"
- 城市 = “波士顿”
- 状态码 = "MA"
样本需求记录:
- title = "买一辆新自行车"
- us_zip = "02111"
- slug =“购买新自行车_波士顿-MA-02111_2”(需要)
关于如何创建这种独特的蛞蝓的任何提示?其组成为:
- Need.title + "_" + Need.get_city() + "_" + 一个可选的递增整数以使其唯一。所有空格都应替换为“-”。
注意:上面我想要的 slug 假设 slug“buy-a-new-bike_Boston-MA-02111”已经存在,这就是它附加了“_2”以使其独一无二。
我已经尝试过 django-extensions,但它似乎只能使用一个字段或字段元组来构造唯一的 slug。我需要传入 get_city() 函数以及标题和城市之间的“_”连接器。有人解决了这个问题并愿意分享吗?
谢谢!
更新
我已经为它的 UUIDField 使用了 django-extensions,所以如果它也可以用于它的 AutoSlugField 那就太好了!