影响复合类的Django Mixin方法

时间:2019-03-18 22:53:22

标签: django django-models

说我有以下简单的课程:

class NumberMixin(models.Model):
    number = models.IntegerField()

class RaceCar(models.Model, FancyMixin, ScaryMixin, NumberMixin):
    def common_logic():
        obj = RaceCar.objects.filter(name='fortytwo').first()
        obj.number = 42
    ...

class Athlete(models.Model, LotsOfStuffMixin, NumberMixin):
    def common_logic():
        obj = Athlete.objects.filter(name='fortytwo').first()
        obj.number = 42
    ...

每个由NumberMixin部分组成的类将具有一个几乎相同的common_logic()

如果我想将common_logic()用于继承自NumberMixin的任何类,有什么方法可以将其放入NumberMixin类中,而不必复制粘贴它进入所有其他班级?

1 个答案:

答案 0 :(得分:2)

在您的示例中,let number: NSNumber = 25 let numberFormatter = NumberFormatter() numberFormatter.locale = Locale.init(identifier: "cn_CN") // or "en_US", "fr_FR" numberFormatter.positiveFormat = "#0.00 ¤" let price = numberFormatter.string(from: number) 方法之间的唯一区别是模型。因此,您可以创建一个类方法并使用common_logic

cls