2010-12-06 16 views
0

ipdb debug:Django: ModelForm sur Enregistrer retourner l'objet d'une autre classe

ipdb> form_class 
<class 'myproject.apps.usersites.forms.IndividualSiteHomeForm'> 
ipdb> form = form_class(request.POST) 
ipdb> form 
<myproject.apps.usersites.forms.IndividualSiteHomeForm object at 0x021A81F0> 
ipdb> var = form.save(commit= False) 
ipdb> var 
<IndividualProfile: user1> 
ipdb> request.POST 
<QueryDict: {u'csrfmiddlewaretoken': [u'208ff2a5a78bd5c2ba9452b365b59b6d'], u'ho 
me_content': [u'Some contents']}> 

Je sauve un IndividualSiteHomeForm après la liaison à données POST. Pourquoi retourne-t-il un objet IndividualProfile?

Pour référence: 1> Modèle

class IndividualSite(SiteBase): 
individual = models.ForeignKey(IndividualProfile, unique=True, verbose_name = _("Professional")) 
logo = models.ImageField(upload_to="sites/logos/",verbose_name=_("logo"))  
home_content = models.TextField(_("Home contents"), null=True, blank=False, 
           help_text = "This text will appear on your web site home. Do not use HTML here.")  

def __unicode__(self): 
    return self.individual.name 

2> ModelForm

class IndividualSiteHomeForm(ModelForm): 
class Meta: 
    model = IndividualSite 
    exclude = ('individual','user','logo') 

Merci pour votre temps.

EDIT: Pour confirmer var est en effet IndividualProfile:

ipdb> var 
<IndividualProfile: user1> 
ipdb> var.home_content 
*** AttributeError: 'IndividualProfile' object has no attribute 'home_content' 
ipdb> var.__class__ 
<class 'profiles.models.IndividualProfile'> 
ipdb> 

Répondre

0

Je ne pense pas qu'il retourne une instance de IndividualProfile. Je pense qu'il renvoie une instance de IndividualSite, comme vous le souhaitez, mais lorsque vous reprenez cela à partir du shell, il utilise la méthode __unicode__ de IndividualSite - qui renvoie la valeur de ForeignKey, qui est un profil individuel.

+0

Je suis sûr que c'est un objet IndividualProfile. S'il vous plaît voir l'EDIT. – trappedIntoCode