在我开始用django编写web界面之前,我有一个已被其他应用程序使用的数据库。表名遵循简单的命名标准,因此django模型Customer应映射到db中的表“customer”。与此同时,我正在添加新的表格/模型。因为我发现每次我必须在其他应用程序中编写查询(django的ORM对他们来说绝对不够)时使用app_customer很麻烦,而且我不想重命名现有的表,所以最好的方法是什么我的django app中的模型使用没有applabel_的表,除了为每个模型添加一个带有db_table =的Meta类?
我有什么理由不这样做吗?我只有一个需要访问此数据库的Web应用程序,其他所有内容都不使用django模型。
答案 0 :(得分:4)
答案 1 :(得分:1)
这可能有效(我还没有测试过)
class CustomModel(Model):
def __init__(self, *args, **kwargs):
self._meta.db_table = self.__class_.__name__.lower()
super(CustomModel, self).__init__(*args, **kwargs)
然后从CustomModel继承所有模型。 虽然我不确定这是值得的,但是为了避免在Meta中指定它。