Bonjour,

Je suis un peu nouveau dans django et je suis en train de créer ma
première petite application (qui est en train d'en devenir une plus
grosse). Dans cette application je me sert des Generic Foreign Key
(contenttype) afin de mettre en place une relation entre des objets assez
spécifiques. Le problème est que je ne comprend pas comment les
GenericForeignKey fonctionnent et ce notamment au niveau de la base de
données, quelle table est ajoutée ? Comment se font les relations ?

Au final j'ai bien intégré les genericforeignkey , mon model n'affiche
pas d'erreurs par contre j'ai beaucoup de mal avec l'interface d'admin qui
ne semble pas fonctionner, voici une partie de mon code:

[code]
class personnel(models.Model):
     prenom = models.CharField(max_length=30)
     nom = models.CharField(max_length = 50)
     e_mail = models.EmailField(max_length = 70)
     en_activite = models.BooleanField()
     Structure = models.CharField(max_length = 50, choices =
STRUCTURES_CHOIX)

     class Meta:
          verbose_name = ('Personnel')
          verbose_name_plural = ('Personnels')

     def __unicode__(self):
          return u'%s, %s, %s' % (self.prenom, self.nom, self.Structure)

class StructureService(models.Model):

     NomStructure = models.CharField(max_length = 50, choices =
STRUCTURES_CHOIX)
     Service = models.CharField(max_length = 50, choices = SERVICES_CHOIX)

     class Meta:
          verbose_name = (u'Matériel de structure')
          verbose_name_plural = (u'Matériels des structures')

     def __unicode__(self):
          return u'%s, %s' % (self.NomStructure, self.Service)
     
class PersonStruct(models.Model):
     PersStructLimitation = {'model_in' :('personnel',
'StructureService')}
     content_type = models.ForeignKey(ContentType, limit_choices_to =
PersStructLimitation)
     object_id = models.PositiveIntegerField()
     content_object = generic.GenericForeignKey('content_type',
'object_id')
     #id_perso = models.ForeignKey(personnel, blank=True, null = True)
     #id_struct = models.ForeignKey(StructureService, blank=True, null =
True)
     #type = models

     class Meta:
          verbose_name = (u'Materiel du personnel/structure')
          verbose_name_plural = (u'Materiels des personnels/structures')
          #unique_together =[("id_perso","type")]

     def __unicode__(self):
          return u'%s' % (self.object_id)

[/code]

Une partie de mon interface d'admin

[code]
class PersonnelStructInLine(generic.GenericTabularInline):
     model = PersonStruct

class PersonnelAdmin(admin.ModelAdmin):
    list_display = ('prenom', 'nom', 'e_mail', 'en_activite', 'Structure')
    #inlines = [MatStructInLine]
    list_filter = ('Structure',)
    ordering = ('-nom',)
    search_fields = ('nom', 'Structure',)
    inlines = (MdpAdmin, PersonnelStructInLine)
[/code]

Et l'erreur qui est affiché....

database error

ERREUR:  la colonne CCLS_INFO_personstruct.content_type_id n'existe pas
LINE 1: SELECT "CCLS_INFO_personstruct"."id", "CCLS_INFO_personstruc...

Voilà si quelqu'un peut m'éclaircir les idées

Par avance Merci
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à