2012-04-11 14 views
4

So habe ich diese bereits existierende Datenbank, die ich versuche, mit Django zu verbinden, und ich habe bereits die Datenbank und ich habe gerade die Modelle aufgeräumt, bevor Sie tatsächlich etwas tun und ich bin in eine Straßensperre geraten. Eine der Datenbanktabellen hat eine Reihe:Django max_length Wert für ein Zeichen verying Reihe

"name" character varying NOT NULL

und wenn ich python manage.py syncdb laufen habe, bekomme ich folgende Fehlermeldung:

app.artistname: "name": CharFields require a "max_length" attribute that is a positive integer.

Also ging ich in models.py um herauszufinden, was das Problem sehen ist, und ich:

name = models.CharField(unique=True, max_length=-1)

Also meine Frage ist, welcher Wert soll ich max_length, wenn nicht sogar die Definition in der Datenbank auf einen Wert festgelegt hat? Setze ich es einfach auf den maximal möglichen Wert?

+0

@agf: Größenlos variieren ist eine PostgreSQL-Erweiterung. –

+0

@agf: Das schien den Trick zu machen, danke! : D –

Antwort

4

Für ein Feld mit unterschiedlicher Länge können Sie eine TextField anstelle einer CharField verwenden, so dass Sie keine Größe festlegen müssen.

Beide Felder unterschiedlicher Länge und TextField s sind im Allgemeinen für große Textmengen vorgesehen.

0

Ich würde es auf einen angemessen hohen Wert setzen, wie für die Anwendung erwartet werden würde. Namen ... normalerweise 80 Zeichen würden ausreichen, wenn Sie keinen Grund haben, etwas anderes zu glauben.

+0

Wenn das eine 'mysql' Frage wäre, die' innodb' beinhaltet, würde ich sagen 255 Zeichen, denn das ist die Grenze dessen, was indiziert werden kann, aber wir reden Postgres hier. – dnozay