这就是我在django应用程序中添加slug的方式,
class Question(models.Model):
question_text = models.CharField(max_length=250)
slug = models.SlugField(max_length=255, unique=True)
def _get_unique_slug(self):
slug = slugify(self.question_text)
unique_slug = slug
num = 1
while Question.objects.filter(slug=unique_slug).exists():
unique_slug = '{}-{}'.format(slug, num)
num += 1
if unique_slug == '':
# then simply add an existing number to unique_slug
return unique_slug
def save(self, *args, **kwargs):
if not self.slug:
self.slug = self._get_unique_slug()
return super(Question, self).save()
问题是,如果slug是''
,那么我想自动添加数字1,2,3 ...... n
我该怎么做?
答案 0 :(得分:0)
您可以将您的功能重写为:
def _get_unique_slug(self):
unique_slug = slug = slugify(self.question_text)
empty = False if unique_slug else True
unique_slug = unique_slug or '1'
for x in itertools.count(1):
if not Question.objects.filter(slug=unique_slug).exists():
break
unique_slug = '{}'.format(x) if empty else '{}-{}'.format(slug, x)
在这里,您可以增加计数并检查数据库,直到找到唯一的免费slug。