2010-05-20 15 views
0

Je veux obtenir des données à partir de 2 tables en une forme en utilisant ModelForm, comme ceci:django insérer des données à partir de 2 tables en utilisant une seule ModelForm

modèle poing:

class Cv(models.Model): 
    created_by = models.ForeignKey(User, blank=True) 
    first_name = models.CharField(('first name'), max_length=30, blank=True) 
    last_name = models.CharField(('last name'), max_length=30, blank=True) 
    url = models.URLField(verify_exists=True) 
    picture = models.ImageField(help_text=('Upload an image (max %s kilobytes)' %settings.MAX_PHOTO_UPLOAD_SIZE),upload_to='avatar') 
    bio = models.CharField(('bio'), max_length=180, blank=True) 
    expertise= models.ForeignKey(Expertise, blank=True) 
    date_birth = models.DateField() 

second modèle:

class Expertise(models.Model): 
    user = models.ForeignKey(User, blank=True) 
    domain = models.CharField(('domain'), max_length=30, blank=True) 
    specialisation = models.CharField(('specialization'), max_length=30, blank=True) 
    degree = models.CharField(('degree'), max_length=30, blank=True) 
    year_last_degree = models.CharField(('year_last_degree'), max_length=30, blank=True) 
    lyceum = models.CharField(('lyceum'), max_length=30, blank=True) 
    faculty = models.CharField(('faculty'), max_length=30, blank=True) 
    references = models.CharField(('references'), max_length=30, blank=True) 
    workplace = models.CharField(('workplace'), max_length=30, blank=True) 

alors je dois en forms.py

class CvForm(ModelForm): 
    class Meta: 
     model = Cv 
     fields = ['first_name','last_name','url','picture','bio','date_birth'] 

class ExpertiseForm(ModelForm): 
    class Meta: 
     model = Expertise 
     fields = ['domain','specialisation'] 

Le point est que je voudrais avoir les deux formes dans une seule forme, et un seul soumettre bien sûr. Donc, je suppose que je devrais utiliser une seule classe de type ModelForm. Mais ça ne marche pas (si je mets aussi l'expertise dans le CvForm). Mon formulaire est créé automatiquement à partir de la classe ModelForm, c'est pourquoi je veux faire une seule classe => un seul formulaire.

Aide PLSS, Merci beaucoup

Répondre

1

Comme il est une clé étrangère de l'expertise à CV, il y a potentiellement plusieurs expertises pour chaque cv. Donc, vous devriez activer cela en utilisant inline formsets.

+0

merci beaucoup, je vais essayer et puis je vais dire si je réussis :) – dana

+1

Argh, juste remarqué que vous avez réellement la clé étrangère dans l'autre sens, de CV à Expertise. Êtes-vous sûr que c'est ce que vous voulez dire? Cela implique que chaque expertise possède plusieurs CV. –

+0

non, j'ai compris que j'avais tort. J'ai fait alors deux autres tables: -Université et -Workplace, pour chaque CV (je suppose que faire ces tables est le seul moyen, puisque j'ai une relation plusieurs à plusieurs (entre les utilisateurs et les universités, et entre les utilisateurs et les lieux de travail)) le seul problème est maintenant: le comportement django pour beaucoup de relations est de mettre une liste déroulante dans ma forme.je veux aussi que l'utilisateur ait un champ de texte, si l'université par exemple n'est pas dans la liste: D – dana