如何在Django中创建一个独特的段塞

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

相关模式:

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”
  • 城市=“波士顿”
  • Statecode=“MA”

样本需要记录:

  • 标题=“买辆新自行车”
  • 我们_zip=“02111”
  • “买一辆新自行车”_波士顿-MA-02111_2“(预期)

关于如何创造这种独特的鼻涕虫,有什么建议吗?其组成如下:

  • 题名+“_“+针头_城市()+“_“+一个可选的递增整数使其唯一。所有空格应改为“-”。

注意:上面我想要的鼻涕虫假设鼻涕虫“购买一辆新自行车”。-MA-02111“已经存在,这就是它拥有的”_2“附在它上,使其独特。

我已经尝试过Django-扩展,但是它似乎只能使用一个字段或字段的元组来构造唯一的段塞。我要通过_城市()的功能以及“_“标题与城市之间的连接点。有人解决了这个问题愿意分享吗?

提问于
用户回答回答于

将Django Slugfield典型的需求保存方法模型可能如下所示

def save(self, **kwargs):
    slug_str = "%s %s" % (self.title, self.us_zip) 
    unique_slugify(self, slug_str) 
    super(Need, self).save(**kwargs)
用户回答回答于

def save(self, *args, **kwargs):
    strtime = "".join(str(time()).split("."))
    string = "%s-%s" % (strtime[7:], self.title)
    self.slug = slugify(string)
    super(Need, self).save()

扫码关注云+社区