Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在两个模型中使用相同的方法_Django_Python 3.x_Django Models_Django Rest Framework - Fatal编程技术网

Django 在两个模型中使用相同的方法

Django 在两个模型中使用相同的方法,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):

我正在为自动生成定制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):
        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的新文件,但其中有无法识别的内容。它们是名称和对象你能告诉我如何解决这个问题吗?