salut a tous,

je viens de créer un base de données, pour generer rapidement un
prototype on m'a conseiller django donc je ne fait que debuter.

ma base de donnée possede des table herité comme suit

[img=heritage]http://sqlpro.developpez.com/cours/modelisation/heritage/images/mpdvhc.gif[/img]
(source :
[url]http://sqlpro.developpez.com/cours/modelisation/heritage/)[/url]

apres avoir parametrer django je recupere le model (manage.py
inspectdb>monAppli/models.py)
je reorganise tout sa en accord avec les clé primaire

je syncrhonise le model (./manage.py syncdb)

tout est bon je lance l'interface d'admin apres parametrage de
monAppli/admin.py

et l'erreur suivante apparait 

[code]OperationalError at /admin/prototype/appliance/
(1054, "Unknown column 'appliance.id' in 'field list'")
Request Method:    GET
Request URL:    http://127.0.0.1:8000/admin/prototype/appliance/
Django Version:    1.3.1
Exception Type:    OperationalError
Exception Value:    
(1054, "Unknown column 'appliance.id' in 'field list'")
Exception Location:   
/usr/lib64/python2.7/site-packages/MySQLdb/connections.py in
defaulterrorhandler, line 36
Python Executable:    /usr/bin/python
Python Version:    2.7.2
Python Path:    
['/home/dsi-sesi/chatelai/partage_projet/testDjango/proto',
 '/usr/lib64/python27.zip',
 '/usr/lib64/python2.7',
 '/usr/lib64/python2.7/plat-linux2',
 '/usr/lib64/python2.7/lib-tk',
 '/usr/lib64/python2.7/lib-old',
 '/usr/lib64/python2.7/lib-dynload',
 '/usr/lib64/python2.7/site-packages',
 '/usr/lib64/python2.7/site-packages/PIL',
 '/usr/lib64/python2.7/site-packages/gst-0.10',
 '/usr/lib64/python2.7/site-packages/gtk-2.0',
 '/usr/lib/python2.7/site-packages',
 '/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info']
Server time:    Tue, 14 Feb 2012 03:49:45 -0600[/code]

ma classe applicance derive de serveur
donc elle ne possede pas de clé primaire seulement une clé etrangere qui
referencie la table mere (qui elle me est heriter d'une classe equipement
:s) 

[code]
class Equipement(models.Model):
    idequipement = models.IntegerField(primary_key=True)
    os = models.ForeignKey(Os, null=True, blank=True)
    equipement_poid = models.IntegerField(null=True, blank=True)
    equipement_cpu = models.IntegerField(null=True, blank=True)
    equipement_ram = models.IntegerField(null=True, blank=True)
    class Meta:
        db_table = u'equipement'


class Serveur(models.Model):
    idserveur = models.ForeignKey(Equipement, db_column='idserveur')
    class Meta:
        db_table = u'serveur'

class Appliance(models.Model):
    idappliance = models.ForeignKey(Serveur, db_column='idappliance')
    appliance_nom = models.IntegerField(null=True, blank=True)
    class Meta:
        db_table = u'appliance'

[/code]

(la table serveur risque de disparaitre d'ici peu car elle ne contient pas
d'infos utiles pour le moment mais là n'est pas a question :p )


alors comment faire pour dire a django qu'il n'y a pas de clé primaire
mais une clé etrangere seulement ? 
est-ce que mon erreur viens bien de sa ? 


voilas en espérant que quelqu'un puisse m'aider un peu 
merci
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à