Changeset 4752
- Timestamp:
- 03/19/07 06:57:53 (1 year ago)
- Files:
-
- django/trunk/django/core/serializers/base.py (modified) (1 diff)
- django/trunk/django/db/models/fields/generic.py (modified) (1 diff)
- django/trunk/django/db/models/fields/__init__.py (modified) (2 diffs)
- django/trunk/django/db/models/options.py (modified) (1 diff)
- django/trunk/tests/regressiontests/serializers_regress/models.py (modified) (2 diffs)
- django/trunk/tests/regressiontests/serializers_regress/tests.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/core/serializers/base.py
r4718 r4752 35 35 self.start_object(obj) 36 36 for field in obj._meta.fields: 37 if field is obj._meta.pk: 38 continue 39 elif field.rel is None: 37 if field.serialize: 38 if field.rel is None: 39 if self.selected_fields is None or field.attname in self.selected_fields: 40 self.handle_field(obj, field) 41 else: 42 if self.selected_fields is None or field.attname[:-3] in self.selected_fields: 43 self.handle_fk_field(obj, field) 44 for field in obj._meta.many_to_many: 45 if field.serialize: 40 46 if self.selected_fields is None or field.attname in self.selected_fields: 41 self.handle_field(obj, field) 42 else: 43 if self.selected_fields is None or field.attname[:-3] in self.selected_fields: 44 self.handle_fk_field(obj, field) 45 for field in obj._meta.many_to_many: 46 if self.selected_fields is None or field.attname in self.selected_fields: 47 self.handle_m2m_field(obj, field) 47 self.handle_m2m_field(obj, field) 48 48 self.end_object(obj) 49 49 self.end_serialization() django/trunk/django/db/models/fields/generic.py
r4265 r4752 95 95 kwargs['blank'] = True 96 96 kwargs['editable'] = False 97 kwargs['serialize'] = False 97 98 Field.__init__(self, **kwargs) 98 99 django/trunk/django/db/models/fields/__init__.py
r4724 r4752 68 68 def __init__(self, verbose_name=None, name=None, primary_key=False, 69 69 maxlength=None, unique=False, blank=False, null=False, db_index=False, 70 core=False, rel=None, default=NOT_PROVIDED, editable=True, 70 core=False, rel=None, default=NOT_PROVIDED, editable=True, serialize=True, 71 71 prepopulate_from=None, unique_for_date=None, unique_for_month=None, 72 72 unique_for_year=None, validator_list=None, choices=None, radio_admin=None, … … 79 79 self.core, self.rel, self.default = core, rel, default 80 80 self.editable = editable 81 self.serialize = serialize 81 82 self.validator_list = validator_list or [] 82 83 self.prepopulate_from = prepopulate_from django/trunk/django/db/models/options.py
r4265 r4752 85 85 if not self.pk and field.primary_key: 86 86 self.pk = field 87 field.serialize = False 87 88 88 89 def __repr__(self): django/trunk/tests/regressiontests/serializers_regress/models.py
r4719 r4752 7 7 8 8 from django.db import models 9 9 from django.contrib.contenttypes.models import ContentType 10 10 11 # The following classes are for testing basic data 11 12 # marshalling, including NULL values. … … 73 74 class XMLData(models.Model): 74 75 data = models.XMLField(null=True) 76 77 class Tag(models.Model): 78 """A tag on an item.""" 79 data = models.SlugField() 80 content_type = models.ForeignKey(ContentType) 81 object_id = models.PositiveIntegerField() 82 83 content_object = models.GenericForeignKey() 84 85 class Meta: 86 ordering = ["data"] 87 88 class GenericData(models.Model): 89 data = models.CharField(maxlength=30) 90 91 tags = models.GenericRelation(Tag) 75 92 76 93 # The following test classes are all for validation django/trunk/tests/regressiontests/serializers_regress/tests.py
r4724 r4752 25 25 instance.save() 26 26 return instance 27 28 def generic_create(pk, klass, data): 29 instance = klass(id=pk) 30 instance.data = data[0] 31 instance.save() 32 for tag in data[1:]: 33 instance.tags.create(data=tag) 34 return instance 27 35 28 36 def fk_create(pk, klass, data): … … 57 65 "Objects with PK=%d not equal; expected '%s' (%s), got '%s' (%s)" % (pk,data, type(data), instance.data, type(instance.data))) 58 66 67 def generic_compare(testcase, pk, klass, data): 68 instance = klass.objects.get(id=pk) 69 testcase.assertEqual(data[0], instance.data) 70 testcase.assertEqual(data[1:], [t.data for t in instance.tags.all()]) 71 59 72 def fk_compare(testcase, pk, klass, data): 60 73 instance = klass.objects.get(id=pk) … … 77 90 # and one to compare objects of that type 78 91 data_obj = (data_create, data_compare) 92 generic_obj = (generic_create, generic_compare) 79 93 fk_obj = (fk_create, fk_compare) 80 94 m2m_obj = (m2m_create, m2m_compare) … … 141 155 (data_obj, 191, XMLData, None), 142 156 157 (generic_obj, 200, GenericData, ['Generic Object 1', 'tag1', 'tag2']), 158 (generic_obj, 201, GenericData, ['Generic Object 2', 'tag2', 'tag3']), 159 143 160 (data_obj, 300, Anchor, "Anchor 1"), 144 161 (data_obj, 301, Anchor, "Anchor 2"), … … 223 240 transaction.leave_transaction_management() 224 241 242 # Add the generic tagged objects to the object list 243 objects.extend(Tag.objects.all()) 244 225 245 # Serialize the test database 226 246 serialized_data = serializers.serialize(format, objects, indent=2)
