2010-12-06 31 views
0

IPDB调试:Django的:上的ModelForm保存另一类返回对象

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']}> 

我绑定它来发布数据后,当保存IndividualSiteHomeForm。 为什么它返回一个IndividualProfile对象?

参考: 1>模型

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') 

感谢您的时间。

编辑:为了确认VAR确实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> 

回答

0

,我不认为它返回的IndividualProfile一个实例。正如你所期望的那样,我认为它返回了一个IndividualSite的实例,但是当你从shell中重新编译它时,它使用IndividualSite的__unicode__方法 - 它返回ForeignKey的值,这是一个IndividualProfile。

+0

我认为这是IndividualProfile对象..请参阅编辑。 – trappedIntoCode 2010-12-06 22:57:50

相关问题