Django 在两个模型中使用相同的方法
我正在为自动生成定制slug方法,我正在这样使用 型号.pyDjango 在两个模型中使用相同的方法,django,python-3.x,django-models,django-rest-framework,Django,Python 3.x,Django Models,Django Rest Framework,我正在为自动生成定制slug方法,我正在这样使用 型号.py class Category(TimeStamp): name = models.CharField(max_length=255) slug = models.SlugField(max_length=100, unique=True) def __str__(self): return self.name def _get_unique_slug(self):
class Category(TimeStamp):
name = models.CharField(max_length=255)
slug = models.SlugField(max_length=100, unique=True)
def __str__(self):
return self.name
def _get_unique_slug(self):
slug = slugify(self.name)
unique_slug = slug
num = 1
while Category.objects.filter(slug=unique_slug).exists():
unique_slug = '{}-{}'.format(slug, num)
num += 1
return unique_slug
def save(self, *args, **kwargs):
if not self.slug:
self.slug = self._get_unique_slug()
super().save(*args, **kwargs)
我在另一个模型中使用这个\u get\u unique\u slug方法。但我想知道是否有美丽的方式来纠正这个问题。我的意思是,不必为每个模型编写唯一的slug。我该怎么做?谢谢?是的,您可以将其作为mixin和reference
self.\uuuu class\uuuu
编写
class UniqueSlugMixin:
def _get_unique_slug(self):
slug = slugify(self.name)
unique_slug = slug
num = 1
while self.__class__.objects.filter(slug=unique_slug).exists():
unique_slug = '{}-{}'.format(slug, num)
num += 1
return unique_slug
是的,您可以将其作为mixin和reference
self.\uuuuu class\uuuuu
编写
class UniqueSlugMixin:
def _get_unique_slug(self):
slug = slugify(self.name)
unique_slug = slug
num = 1
while self.__class__.objects.filter(slug=unique_slug).exists():
unique_slug = '{}-{}'.format(slug, num)
num += 1
return unique_slug
那么我应该继承这个方法吗?class Category(TimeStamp,uniqueslagmixin):像这样?我创建了一个名为mixin.py的新文件,但其中有无法识别的内容。它们是名称和对象,你能告诉我如何解决这个问题吗?那么我应该继承这个方法吗?class Category(TimeStamp,uniqueslagmixin):像这样?我创建了一个名为mixin.py的新文件,但其中有无法识别的内容。它们是名称和对象你能告诉我如何解决这个问题吗?