Le 7 mai 2012 à 16:40, dseed a écrit : > Mais pour une table de croisement j'ai réussit mettre 2 champs en clé > etrangère qui sont des clé primaires : PRIMARY KEY (`id_url`,`id_user`) > ps: ca fonctionne !! > Comment je fais en Django pour retranscrire ça ? > > CREATE TABLE `t_x_site` ( > `id_x_site` int(11) unsigned NOT NULL AUTO_INCREMENT, > `id_user` int(11) unsigned NOT NULL, > `id_url` int(11) unsigned NOT NULL, > `nb_visite` int(11) unsigned NOT NULL DEFAULT '0', > `date_visite` datetime DEFAULT NULL, > `recommander` tinyint(1) unsigned NOT NULL DEFAULT '0', > `actif` tinyint(1) unsigned NOT NULL DEFAULT '0', > PRIMARY KEY (`id_url`,`id_user`), > UNIQUE KEY `id_x_site` (`id_x_site`), > KEY `lien_url` (`id_url`), > KEY `lien_user` (`id_user`), > CONSTRAINT `lien_url` FOREIGN KEY (`id_url`) REFERENCES `t_url` > (`id_url`), > CONSTRAINT `lien_user` FOREIGN KEY (`id_user`) REFERENCES `t_user` > (`id_user`) > ) ENGINE=InnoDB AUTO_INCREMENT=549 DEFAULT CHARSET=utf8;
De manière générale lorsque une table de croisement comporte des attributs qui lui sont propres (et non pas uniquement le couple id_table1, id_table2) il est préférable de rajouter une primary key a cette table, plutôt que d'utiliser id_table1 + id_table2 en tant que tel. De plus en django il y a une limitation qui fait que nous ne pouvons pas avoir une primary key sur plusieurs champs (cf https://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys) Je te conseille donc de déclarer id_x_site en primary key et de mettre une contrainte d'unicité sur id_url + id_user et cela devrait moins poser de souci dans ton appli. _______________________________________________ django mailing list [email protected] http://lists.afpy.org/mailman/listinfo/django
