mysql - 在 Django 中, `class Meta:` 声明放在哪里重要吗?

标签 mysql django macos model meta

按照惯例,django 将 class Meta: 声明放在类定义中的倒数第二个,就在 __unicode__ 方法定义之前。这是必需的吗?我正在尝试追踪 Lion OSX 上的一个潜在错误,其中 db_table = u'TableName' 语句的大小写(大写/小写)在某些模型中被忽略了。对于某些模型,manage.py syncdb 使用 lower()ed 表名创建 mysql 表,对于其他模型,它正确使用 db_table 大小写。更复杂的模型,使用自定义 save() 和其他方法是在创建 mysql 表之前转换为小写的模型。我正在尝试重新排列大量代码以查看是否是问题所在,但找不到正确顺序的文档,尽管我记得过去某处 class Meta: 的位置是指定。

还尝试了 db_table 规范的 unicode 文字和单字节字符串文字。没有什么不同(对于工作或非工作模型)

相关代码如下:

grep -A5 -B2 _table 'entityorganizer/models.py'

    class Meta:
        db_table     = 'Entity'
        verbose_name_plural = "entities"
        ordering = ["map_status","type_name","name"] 
        get_latest_by = "updated"

--

    class Meta:
        db_table = 'EntityRelationship'
        ordering = ["to_entity","relationship_type"]
        unique_together = (('from_entity','to_entity','relationship_type'))
        get_latest_by = "updated"
        verbose_name = "relationship"

--

    class Meta:
        db_table = 'Specialty'
        verbose_name_plural = u'specialties'

    def __unicode__(self):
        return '%s'%(self.specialty)

--

    class Meta:
        db_table = 'ZipCode'
        get_latest_by = "updated"

    def get_region(self):
        return REGION[region_id_v2-200][1] or 0

--

    class Meta:
        db_table = 'Setting'

    def __unicode__(self):
        return '%s = %s'%(self.name, self.value) #, self.updated)

最佳答案

您可以将 class Meta 放在模型中的任何位置,只要它与正确的缩进匹配即可。

关于mysql - 在 Django 中, `class Meta:` 声明放在哪里重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12288142/

相关文章:

c - 为什么我的 C 代码给出下一个回文的错误输出

python - NSWindow 拖动区域应该只在主线程上无效!这将在未来抛出异常

php - 与 DELETE ALL 和 INSERT 相比,UPDATE OR INSERT 命令有技术优势吗?

将 Django 项目部署到 Heroku 时,python manage.py collectstatic --noinput 错误

python - 大数据集的 Django 分页太慢

macos - startAccessingSecurityScopedResource() 实际上是做什么的?

mysql按总和和最好成绩排名

mysql - 通过计数(不同)优化查询

C# mysql插入语句。参数化查询示例?

django - 解释补丁 --dry-run 的输出