Mysql 在django中,`class Meta:`声明放在哪里重要吗?
按照惯例,django将Mysql 在django中,`class Meta:`声明放在哪里重要吗?,mysql,django,macos,model,meta,Mysql,Django,Macos,Model,Meta,按照惯例,django将类Meta:声明放在类定义中倒数第二位,就在\uuuuuuunicode\uuuu方法定义之前。这是必需的吗?我正在试图追踪Lion OSX上的一个潜在错误,其中一些模型忽略了db_table=u'TableName'语句的大小写(大写/小写)。对于某些型号manage.py syncdb使用lower()ed表名创建mysql表,对于其他型号,它正确使用db\u表大小写。更复杂的模型,包括自定义save()和其他方法,是在创建mysql表之前转换为小写的模型。我正在尝试
类Meta:
声明放在类定义中倒数第二位,就在\uuuuuuunicode\uuuu
方法定义之前。这是必需的吗?我正在试图追踪Lion OSX上的一个潜在错误,其中一些模型忽略了db_table=u'TableName'
语句的大小写(大写/小写)。对于某些型号manage.py syncdb
使用lower()
ed表名创建mysql表,对于其他型号,它正确使用db\u表
大小写。更复杂的模型,包括自定义save()
和其他方法,是在创建mysql表之前转换为小写的模型。我正在尝试大量代码重新排列,以确定这是否是问题所在,但找不到正确顺序的文档,尽管我记得在过去的某个地方指定了类Meta:
的位置
还尝试了db_表规范的unicode文本和单字节字符串文本。Niether发挥了作用(对于工作模型或非工作模型)
以下是相关代码:
grep-A5-B2_表'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)
您可以将
类元
放在模型中任何您想要的地方,只要它与正确的缩进匹配。结果表明类元:
的位置确实是一个危险的位置(正如@sdolan所说的)。显然,MAMP或django将有关已删除表的元数据存储在表本身之外的某个位置。一旦我们删除了整个数据库并重新构建,db_表
案例就得到了mysql的认可,而syncdb
这就是我的假设。我的model def中肯定有其他错误,或者Lion和MAMP处理表名的方式不一致。在工作和非工作之间改变的唯一重要的事情是在服务器上升级到Lion OSX。尝试双重检查您的选项卡?选项卡/缩进很好。可以在Linux服务器上正常工作,但不能在OSX Lion上正常工作。如果从settings.py中删除此特定应用程序,它能正常工作吗?您确定代码与osx+linux机器同步吗?我只是在钓鱼。。如果看不到确切的设置/代码,很难判断。是的,所有其他应用程序(以及同一应用程序中的所有其他型号)都可以在OSX上正常工作。这就是为什么我被难住了,问了一个关于元定义顺序的愚蠢问题。