Commits

adr...@bcc190cf-cafb-0310-a4f2-bffc1f526a37  committed 9f1151e

Fixed #3 -- Made OneToOneField act like ForeignKey and ManyToManyField. This is the last big API change before the official launch.

  • Participants
  • Parent commits 1d3014b

Comments (0)

Files changed (2)

File django/core/meta.py

         choices = self.get_choices(include_blank=False)
         return [curry(formfields.SelectMultipleField, size=min(max(len(choices), 5), 15), choices=choices)]
 
+class OneToOneField(IntegerField):
+    def __init__(self, to, to_field=None, rel_name=None, **kwargs):
+        kwargs['name'] = kwargs.get('name', 'id')
+        kwargs['verbose_name'] = kwargs.get('verbose_name', 'ID')
+        to_field = to_field or to._meta.pk.name
+        rel_name = rel_name or to._meta.object_name.lower()
+        kwargs['rel'] = OneToOne(to, rel_name, to_field,
+            num_in_admin=kwargs.pop('num_in_admin', 0),
+            edit_inline=kwargs.pop('edit_inline', False),
+            edit_inline_type=kwargs.pop('edit_inline_type', STACKED),
+            related_name=kwargs.pop('related_name', None),
+            limit_choices_to=kwargs.pop('limit_choices_to', None),
+            lookup_overrides=kwargs.pop('lookup_overrides', None),
+            raw_id_admin=kwargs.pop('raw_id_admin', False))
+        kwargs['primary_key'] = True
+        IntegerField.__init__(self, **kwargs)
+
 ####################
 # RELATIONSHIPS    #
 ####################

File docs/db-api.txt

     class Restaurant(meta.Model):
         ...
         fields = (
-            meta.IntegerField('id', 'ID', primary_key=True,
-                rel=meta.OneToOne(places.Place, 'place', 'id')),
+            meta.OneToOneField(places.Place),
             ...
         )
 
 Changing objects
 ================
 
-Once you've retrieved an object from the database using any of the above 
+Once you've retrieved an object from the database using any of the above
 options, changing it is extremely easy.  Make changes directly to the
 objects fields, then call the object's ``save()`` method::