Django - 模型类接口?

Han*_*pan 1 django django-models

我有一系列与各种 Web API 交互的模型。我需要确保每个模型都有特定的方法。使用 PHP,我会创建一个类接口,以确保我的模型具有完成其工作所需的方法,但似乎 Python 接口不适用于 Django 模型。

我假设这样做的方法是创建一个扩展 model.Model 的基类,它定义我需要的方法,如有必要,我可以在每个 API 模型中覆盖它们。在同步数据库时,我如何在没有 Django 选择“基”类的情况下做到这一点?这甚至是正确的方法吗?

Luk*_*ger 5

您可以使用类的abstract = True方面Meta

class BaseModelInterface(models.Model):
    class Meta:
        abstract = True

class ActualModel(BaseModelInterface):
    [...normal model code...]
Run Code Online (Sandbox Code Playgroud)

文档:http : //docs.djangoproject.com/en/1.3/ref/models/options/

话虽如此,通常鸭子类型被认为是“Python 方式”,并且您的调用代码应该测试方法是否存在 ( if hasattr(instance, 'method_name'))。也就是说,您比我们更了解您的特定实现,因此您可以使用 abstract = True 来获得您想要的行为。:)