如何在python django中调用类外的方法并将类实例传递给它

如何在python django中调用类外的方法并将类实例传递给它,python,django,django-models,slugify,Python,Django,Django Models,Slugify,我有一个名为Klass的模型,代码如下: class Klass(models.Model): title = models.CharField(max_length=50, verbose_name='class name') slug = models.SlugField(default=slug_generator, allow_unicode=True, unique=True) 这是slug\u生成器函数,不属于该类 def slug_generator(instance, new_

我有一个名为Klass的模型,代码如下:

class Klass(models.Model):
title = models.CharField(max_length=50, verbose_name='class name')
slug = models.SlugField(default=slug_generator, allow_unicode=True, unique=True)
这是
slug\u生成器
函数,不属于该类

def slug_generator(instance, new_slug):
    if new_slug is not None:
        slug = new_slug
    else:
        slug = slugify(instance.title)

    Klass = instance.__class__
    qs_exists = Klass.objects.filter(slug=slug).exists()
    if qs_exists:
        new_slug = "{slug}-{randstr}".format(
            slug=slug,
            randstr=random.randint(100000,999999)
        )
        return unique_slug_generator(instance, new_slug=new_slug)
    return slug
为了创建独特的slug,我想使用这个函数。 我想将此功能用于其他一些型号。
如何将该类传递给它?

您可以创建一个抽象类,另一个类将从该类中分层,我不检查代码,但它是这样的

class Slug(models.Model):

    class Meta:
        abstract = True

    def slug_generator(instance, new_slug):
       if new_slug is not None:
       ....
然后:

class Klass(Slug):
.....

为什么不定义
\uuuu init\uuuu
构造函数,并在其中应用唯一的ID生成器以及您想要的任何其他实例属性呢?@marchWest正如我所说,我想对一些模型使用一个函数,因为根据标题属性,我有6个模型需要唯一的slug。我不想写6次代码@MojtabaSalehiyan您可以使用通用方法创建一个模型,并从这个基类继承您的模型。您不必编写代码6次。在任何情况下,默认值都不能依赖于实例中的其他数据;除此之外,在应用默认值的点上没有任何其他实例数据。在
save
方法中执行此操作。