Django

Code

Changeset 8469

Show
Ignore:
Timestamp:
08/22/08 14:27:26 (11 months ago)
Author:
brosner
Message:

Fixed #7947 -- Handle the display of OneToOneField? in model forms correctly. Thanks tyson for the report and original patch.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/admin/options.py

    r8433 r8469  
    129129            # Don't wrap raw_id fields. Their add function is in the popup window. 
    130130            if not db_field.name in self.raw_id_fields: 
    131                 formfield.widget = widgets.RelatedFieldWidgetWrapper(formfield.widget, db_field.rel, self.admin_site) 
     131                # formfield can be None if it came from a OneToOneField with 
     132                # parent_link=True 
     133                if formfield is not None: 
     134                    formfield.widget = widgets.RelatedFieldWidgetWrapper(formfield.widget, db_field.rel, self.admin_site) 
    132135            return formfield 
    133136 
  • django/trunk/django/db/models/fields/related.py

    r8442 r8469  
    745745    def __init__(self, to, to_field=None, **kwargs): 
    746746        kwargs['unique'] = True 
    747         kwargs['editable'] = False 
    748747        if 'num_in_admin' not in kwargs: 
    749748            kwargs['num_in_admin'] = 0 
     
    755754        if not cls._meta.one_to_one_field: 
    756755            cls._meta.one_to_one_field = self 
     756     
     757    def formfield(self, **kwargs): 
     758        if self.rel.parent_link: 
     759            return None 
     760        return super(OneToOneField, self).formfield(**kwargs) 
    757761 
    758762class ManyToManyField(RelatedField, Field): 
  • django/trunk/tests/modeltests/model_forms/models.py

    r8325 r8469  
    5454    def __unicode__(self): 
    5555        return self.headline 
     56 
     57class ImprovedArticle(models.Model): 
     58    article = models.OneToOneField(Article) 
     59 
     60class ImprovedArticleWithParentLink(models.Model): 
     61    article = models.OneToOneField(Article, parent_link=True) 
    5662 
    5763class PhoneNumber(models.Model): 
     
    774780[(1L, 'multicategory Entertainment'), (2L, "multicategory It's a test"), (3L, 'multicategory Third'), (4L, 'multicategory Fourth')] 
    775781 
     782# OneToOneField ############################################################### 
     783 
     784>>> class ImprovedArticleForm(ModelForm): 
     785...     class Meta: 
     786...         model = ImprovedArticle 
     787>>> ImprovedArticleForm.base_fields.keys() 
     788['article'] 
     789 
     790>>> class ImprovedArticleWithParentLinkForm(ModelForm): 
     791...     class Meta: 
     792...         model = ImprovedArticleWithParentLink 
     793>>> ImprovedArticleWithParentLinkForm.base_fields.keys() 
     794[] 
     795 
    776796# PhoneNumberField ############################################################ 
    777797