我需要博客帖子的标签在每个用户的基础上都是唯一的。当用户在Django项目中保存新帖子时,我希望它检查该条是否存在,如果存在,则在其末尾添加-1。
最佳方法是什么?我在下面添加了我的代码,该代码始终添加-1,并且我确定有更好的方法可以执行此操作
class Post(models.Model):
...
def save(self, *args, **kwargs):
posts = Post.objects.filter(user=self.user, slug=self.slug)
if self not in posts:
self.slug = self.slug + '-1'
super(Post, self).save(*args, **kwargs)
我发现this snippet非常有用。
与您的主要区别在于,它使用while
语句检查/ blog-title-1 /是否存在,如果不存在,则尝试/ blog-title-2 /等,直到找到可用的子弹为止。