2011-05-25 5 views
0

J'utilise geodjango pour créer un référentiel de données et j'ai un modèle de base pour stocker le contenu d'un fichier de formes. Je veux avoir plusieurs tables, avec des attributs générés à la volée. Il y a des tables qui traitent avec l'utilisateur, et une table qui s'occupe de chaque fichier de forme.Comment créer plusieurs modèles en utilisant django?

Ce que je veux savoir, c'est que j'ai un modèle de base qui crée un fichier table par forme. Ce que je veux, c'est aussi une autre table qui traite de l'utilisateur. Alors, devrais-je créer un autre modèle ou une autre classe dans le même modèle?

Ainsi, si je veux avoir plusieurs tables, dois-je créer plusieurs modèles ou plusieurs classes?

Si plusieurs modèles, comment puis-je le lier à une vue?

+0

Il semble que vous confondiez 'models.py' avec les classes du modèle dans le fichier. – Pureferret

Répondre

1

Un modèle est simplement une représentation programmatique d'une table de base de données. Il existe une corrélation un-à-un, c'est-à-dire pour chaque modèle, vous obtenez une table de base de données.

Le concept de modèles est distinct du concept de vues. Les vues ne sont que des méthodes qui répondent aux requêtes HTTP. Dans n'importe quelle vue, vous pouvez importer et utiliser n'importe quel modèle; vous importez simplement le modèle et faites ce que vous voulez. Il semble que vous soyez très nouveau sur Django et sur l'ensemble du concept de l'architecture MVC (Model-View-Controller) en général. Vous devriez passer du temps à lire le Django Book; c'est disponible gratuitement en ligne. Focus en particulier sur les chapitres sur Models et Views. Le Django Documentation est un peu plus haut niveau mais a une mine d'informations.

+0

Nous devrions probablement préciser qu'il n'y a pas, à proprement parler, de corrélation entre les modèles et les tables. Par exemple, si vous avez deux modèles, un avec un ManyToManyField à l'autre, vous aurez une table pour chacun de vos modèles _et_ une table de liaison: 2 modèles, 3 tables. – Spycho

+1

Dans un sens, oui. Dans un autre, il y a un 'Model' implicite qui est corrélé à la troisième table. C'est juste que vous ne le définissez pas: Django le fait. Pourtant, j'étais intentionnellement simpliste. –

+0

Je pensais juste que je devrais le mentionner pour plus de clarté. – Spycho

Questions connexes