按照惯例,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/