使django字段名称camelCase安全吗



我正在将django与MSSQL Server后端一起使用。我在数据库上运行了inspectdb,它使我所有的字段名都小写,而以前它们是camelCase。

我想保留camelCase(即使它与Python不一致)。我在检查中找到了它的位置

 """
        Modify the column name to make it Python-compatible as a field name
        """
        field_params = {}
        field_notes = []
        new_name = col_name.lower()
        if new_name != col_name:
            field_notes.append('Field name made lowercase.')

删除col_name.lower()是否安全,或者是否存在会导致camelCase出现问题的原因?

不,它不会在Django层上引起问题。

然而,正如您所说,这与pep8风格不兼容,并且会导致一路上的挫折感,特别是如果其他python开发人员也参与其中,而且据我所知,MSSQL对表/字段名称不区分大小写。

--更新--@Wolph有一个很好的建议

first_name = models.CharField(..., db_column='FirstName')

至于python风格和遗留数据库之间的平衡。

由于MSSQL在列名时不区分大小写,这对Django没有任何影响。除了列名冲突,也就是说,同时拥有camelcasecamelCase在Python中是合法的,但不会有好的结果。

不过,为了方便起见,我建议您在Python中简单地将数据库中的camelcase字段名转换为camel_case类型命名。

所以,如果你的桌子看起来像这样:

FirstName
LastName

由此产生的Django模型将具有如下字段:

first_name = models.CharField(..., db_column='FirstName')
last_name = models.CharField(..., db_column='LastName')

在我看来,这是一个编码风格的问题。根据官方文件,它显示:

字段名称应全部小写,使用下划线而不是camelCase。

所以,如果你对此一无所知的话。请确保您正在遵循文档。它将对其他开发人员友好。