Django

Code

Changeset 3846

Show
Ignore:
Timestamp:
09/25/06 21:58:36 (2 years ago)
Author:
mtredinnick
Message:

Fixed #2783 -- Fixed one-to-one fields to work with any primary key data type
in the related model. Thanks, Joel Heenan.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/AUTHORS

    r3819 r3846  
    8383    Brant Harris 
    8484    heckj@mac.com 
     85    Joel Heenan <joelh-django@planetjoel.com> 
    8586    hipertracker@gmail.com 
    8687    Ian Holsman <http://feh.holsman.net/> 
  • django/trunk/django/core/management.py

    r3841 r3846  
    148148    pending_references = {} 
    149149    for f in opts.fields: 
    150         if isinstance(f, models.ForeignKey): 
     150        if isinstance(f, (models.ForeignKey, models.OneToOneField)): 
    151151            rel_field = f.rel.get_related_field() 
    152152            data_type = get_rel_data_type(rel_field) 
  • django/trunk/tests/modeltests/one_to_one/models.py

    r3661 r3846  
    3030    def __str__(self): 
    3131        return "%s the waiter at %s" % (self.name, self.restaurant) 
     32 
     33class ManualPrimaryKey(models.Model): 
     34    primary_key = models.CharField(maxlength=10, primary_key=True) 
     35    name = models.CharField(maxlength = 50) 
     36 
     37class RelatedModel(models.Model): 
     38    link = models.OneToOneField(ManualPrimaryKey) 
     39    name = models.CharField(maxlength = 50) 
    3240 
    3341__test__ = {'API_TESTS':""" 
     
    152160>>> r = Restaurant.objects.get(pk=1) 
    153161>>> r.delete() 
     162 
     163# One-to-one fields still work if you create your own primary key 
     164>>> o1 = ManualPrimaryKey(primary_key="abc123", name="primary") 
     165>>> o1.save() 
     166>>> o2 = RelatedModel(link=o1, name="secondary") 
     167>>> o2.save() 
    154168"""}