1

慣例により、djangoは宣言をクラス定義の最後から2番目、メソッド定義class Meta:の直前に配置します。__unicode__これは必要ですか?db_table = u'TableName'一部のモデルでステートメントの大文字と小文字(大文字/小文字)が無視されているLionOSXの陰湿なエラーを追跡しようとしています。一部のモデルでは、 edテーブル名を使用してmanage.py syncdbmysqlテーブルを作成し、その他のモデルでは、ケースを適切に使用します。カスタムメソッドやその他のメソッドを使用したより複雑なモデルは、mysqlテーブルを作成する前に小文字に変換されるモデルです。私はそれが問題であるかどうかを確認するために多くのコードを再配置しようとしていますが、過去にどこかで位置が指定されたことを思い出しましたが、物事の正しい順序に関するドキュメントを見つけることができません。lower()db_tablesave()class Meta:

また、db_table仕様のUnicodeリテラルとシングルバイト文字列リテラルの両方を試しました。Nietherは違いを生みます(動作中または非動作中のモデルの場合)

関連するコードは次のとおりです。

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)
4

2 に答える 2

2

class Meta正しいインデントに一致する限り、モデルの好きな場所に配置できます。

于 2012-09-05T19:08:54.060 に答える
1

class Meta:位置は確かに赤いニシンだったことがわかります(@sdolanが明らかにしたように)。どうやらMAMPまたはdjangoは、テーブル自体の外側のどこかに削除されたテーブルの場合に関するメタデータを格納しているようです。データベース全体を削除して再構築すると、このdb_tableケースはmysqlとsyncdb

于 2012-09-07T17:18:48.063 に答える