Changeset 8528
- Timestamp:
- 08/24/08 22:51:25 (3 months ago)
- Files:
-
- django/trunk/django/db/models/fields/__init__.py (modified) (1 diff)
- django/trunk/django/forms/models.py (modified) (3 diffs)
- django/trunk/tests/modeltests/model_formsets/models.py (modified) (2 diffs)
- django/trunk/tests/modeltests/model_forms/models.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/db/models/fields/__init__.py
r8526 r8528 98 98 self.db_column = db_column 99 99 self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE 100 self.auto_created = auto_created 100 101 101 102 # Set db_index to True if the field has a relationship and doesn't explicitly set db_index. django/trunk/django/forms/models.py
r8489 r8528 97 97 """ 98 98 # avoid a circular import 99 from django.db.models.fields.related import ManyToManyField 99 from django.db.models.fields.related import ManyToManyField, OneToOneField 100 100 opts = instance._meta 101 101 data = {} … … 116 116 # MultipleChoiceWidget needs a list of pks, not object instances. 117 117 data[f.name] = [obj.pk for obj in f.value_from_object(instance)] 118 elif isinstance(f, OneToOneField): 119 data[f.attname] = f.value_from_object(instance) 118 120 else: 119 121 data[f.name] = f.value_from_object(instance) … … 318 320 def add_fields(self, form, index): 319 321 """Add a hidden field for the object's primary key.""" 320 if self.model._meta. has_auto_field:322 if self.model._meta.pk.auto_created: 321 323 self._pk_field_name = self.model._meta.pk.attname 322 324 form.fields[self._pk_field_name] = IntegerField(required=False, widget=HiddenInput) django/trunk/tests/modeltests/model_formsets/models.py
r8179 r8528 14 14 def __unicode__(self): 15 15 return self.name 16 17 class BetterAuthor(Author): 18 write_speed = models.IntegerField() 16 19 17 20 class Book(models.Model): … … 230 233 [[('id', 1), ('name', u'Charles Baudelaire')], [('id', 3), ('name', u'Paul Verlaine')], [('id', 2), ('name', u'Walt Whitman')]] 231 234 235 # Model inheritance in model formsets ######################################## 236 237 >>> BetterAuthorFormSet = modelformset_factory(BetterAuthor) 238 >>> formset = BetterAuthorFormSet() 239 >>> for form in formset.forms: 240 ... print form.as_p() 241 <p><label for="id_form-0-name">Name:</label> <input id="id_form-0-name" type="text" name="form-0-name" maxlength="100" /></p> 242 <p><label for="id_form-0-write_speed">Write speed:</label> <input type="text" name="form-0-write_speed" id="id_form-0-write_speed" /><input type="hidden" name="form-0-author_ptr_id" id="id_form-0-author_ptr_id" /></p> 243 244 >>> data = { 245 ... 'form-TOTAL_FORMS': '1', # the number of forms rendered 246 ... 'form-INITIAL_FORMS': '0', # the number of forms with initial data 247 ... 'form-0-author_ptr_id': '', 248 ... 'form-0-name': 'Ernest Hemingway', 249 ... 'form-0-write_speed': '10', 250 ... } 251 252 >>> formset = BetterAuthorFormSet(data) 253 >>> formset.is_valid() 254 True 255 >>> formset.save() 256 [<BetterAuthor: Ernest Hemingway>] 257 258 >>> formset = BetterAuthorFormSet() 259 >>> for form in formset.forms: 260 ... print form.as_p() 261 <p><label for="id_form-0-name">Name:</label> <input id="id_form-0-name" type="text" name="form-0-name" value="Ernest Hemingway" maxlength="100" /></p> 262 <p><label for="id_form-0-write_speed">Write speed:</label> <input type="text" name="form-0-write_speed" value="10" id="id_form-0-write_speed" /><input type="hidden" name="form-0-author_ptr_id" value="4" id="id_form-0-author_ptr_id" /></p> 263 <p><label for="id_form-1-name">Name:</label> <input id="id_form-1-name" type="text" name="form-1-name" maxlength="100" /></p> 264 <p><label for="id_form-1-write_speed">Write speed:</label> <input type="text" name="form-1-write_speed" id="id_form-1-write_speed" /><input type="hidden" name="form-1-author_ptr_id" id="id_form-1-author_ptr_id" /></p> 265 266 >>> data = { 267 ... 'form-TOTAL_FORMS': '2', # the number of forms rendered 268 ... 'form-INITIAL_FORMS': '1', # the number of forms with initial data 269 ... 'form-0-author_ptr_id': '4', 270 ... 'form-0-name': 'Ernest Hemingway', 271 ... 'form-0-write_speed': '10', 272 ... 'form-1-author_ptr_id': '', 273 ... 'form-1-name': '', 274 ... 'form-1-write_speed': '', 275 ... } 276 277 >>> formset = BetterAuthorFormSet(data) 278 >>> formset.is_valid() 279 True 280 >>> formset.save() 281 [] 232 282 233 283 # Inline Formsets ############################################################ django/trunk/tests/modeltests/model_forms/models.py
r8477 r8528 13 13 from django.db import models 14 14 from django.core.files.storage import FileSystemStorage 15 16 # Python 2.3 doesn't have sorted() 17 try: 18 sorted 19 except NameError: 20 from django.utils.itercompat import sorted 15 21 16 22 temp_storage = FileSystemStorage(tempfile.gettempdir()) … … 60 66 class ImprovedArticleWithParentLink(models.Model): 61 67 article = models.OneToOneField(Article, parent_link=True) 68 69 class BetterWriter(Writer): 70 pass 62 71 63 72 class PhoneNumber(models.Model): … … 92 101 __test__ = {'API_TESTS': """ 93 102 >>> from django import forms 94 >>> from django.forms.models import ModelForm 103 >>> from django.forms.models import ModelForm, model_to_dict 95 104 >>> from django.core.files.uploadedfile import SimpleUploadedFile 96 105 … … 794 803 [] 795 804 805 >>> bw = BetterWriter(name=u'Joe Better') 806 >>> bw.save() 807 >>> sorted(model_to_dict(bw).keys()) 808 ['id', 'name', 'writer_ptr_id'] 809 796 810 # PhoneNumberField ############################################################ 797 811
