2017-12-11 5 views
0

Ich arbeite mit Django und Postgresql. Während ich in psql nachgesehen habe, um das Datenbank- und Tabellenschema zu sehen, bemerkte ich, dass die Foreign-Key-Einschränkungen meistens modelname__field_id_hexnum_fk_basemodel_field_id genannt werden, aber in einigen Fällen ist es ein Hash, z. D19cb71bc44206c3464da32ad943c8f8. Warum passiert das? Liegt es an der Länge des Constraint-Namens oder an einigen anderen Faktoren?psql: ForeignKey Einschränkung Name

Antwort

0

Vielleicht gleiche Logik wie viele-zu-viele-Beziehung Vermittlern Tisch sitzen? ..

https://docs.djangoproject.com/en/2.0/ref/models/fields/

Hinter den Kulissen schafft Django ein Zwischen Join-Tabelle zu stellt den many-to-many Beziehung. Standardmäßig wird dieser Tabellenname unter Verwendung des Namens des Viele-zu-Viele-Felds und des Namens der Tabelle für das Modell generiert, das es enthält. Da einige Datenbanken keine Tabellennamen über eine bestimmte Länge unterstützen, werden diese Tabellennamen automatisch auf 64 Zeichen gekürzt und ein Eindeutigkeits-Hash wird verwendet.