Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在django中,`class Meta:`声明放在哪里重要吗?_Mysql_Django_Macos_Model_Meta - Fatal编程技术网

Mysql 在django中,`class Meta:`声明放在哪里重要吗?

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表之前转换为小写的模型。我正在尝试

按照惯例,django将
类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上正常工作。这就是为什么我被难住了,问了一个关于元定义顺序的愚蠢问题。