~ubuntu-branches/ubuntu/precise/python-django/precise

« back to all changes in this revision

Viewing changes to tests/modeltests/serializers/models.py

  • Committer: Bazaar Package Importer
  • Author(s): Chris Lamb
  • Date: 2010-05-21 07:52:55 UTC
  • mfrom: (1.1.10 upstream) (4.4.7 sid)
  • Revision ID: james.westby@ubuntu.com-20100521075255-i1zpeyc0k8512pd7
Tags: 1.2-1
New upstream stable release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
``QuerySet`` objects to and from "flat" data (i.e. strings).
7
7
"""
8
8
 
9
 
try:
10
 
    from decimal import Decimal
11
 
except ImportError:
12
 
    from django.utils._decimal import Decimal # Python 2.3 fallback
13
 
 
 
9
from decimal import Decimal
14
10
from django.db import models
15
11
 
16
12
class Category(models.Model):
149
145
# database since the data was serialized (we'll simulate that below).
150
146
>>> for obj in serializers.deserialize("xml", xml):
151
147
...     print obj
152
 
<DeserializedObject: Poker has no place on ESPN>
153
 
<DeserializedObject: Time to reform copyright>
 
148
<DeserializedObject: serializers.Article(pk=1)>
 
149
<DeserializedObject: serializers.Article(pk=2)>
154
150
 
155
151
# Deserializing data with different field values doesn't change anything in the
156
152
# database until we call save():
183
179
>>> json = serializers.serialize("json", Article.objects.all())
184
180
>>> for obj in serializers.deserialize("json", json):
185
181
...     print obj
186
 
<DeserializedObject: Poker has no place on television>
187
 
<DeserializedObject: Time to reform copyright>
 
182
<DeserializedObject: serializers.Article(pk=1)>
 
183
<DeserializedObject: serializers.Article(pk=2)>
188
184
 
189
185
>>> json = json.replace("Poker has no place on television", "Just kidding; I love TV poker")
190
186
>>> for obj in serializers.deserialize("json", json):
205
201
 
206
202
>>> for obj in serializers.deserialize("json", json):
207
203
...     print obj
208
 
<DeserializedObject: Profile of Joe>
 
204
<DeserializedObject: serializers.AuthorProfile(pk=1)>
209
205
 
210
206
# Objects ids can be referenced before they are defined in the serialization data
211
207
# However, the deserialization process will need to be contained within a transaction
275
271
 
276
272
>>> obj = list(serializers.deserialize("json", serialized))[0]
277
273
>>> print obj
278
 
<DeserializedObject: Soslan Djanaev (1) playing for Spartak Moskva>
 
274
<DeserializedObject: serializers.Player(pk=1)>
 
275
 
 
276
# Regression for #12524 -- dates before 1000AD get prefixed 0's on the year
 
277
>>> a = Article.objects.create(
 
278
...     pk=4,
 
279
...     author = jane,
 
280
...     headline = "Nobody remembers the early years",
 
281
...     pub_date = datetime(1, 2, 3, 4, 5, 6))
 
282
 
 
283
>>> serialized = serializers.serialize("json", [a])
 
284
>>> print serialized
 
285
[{"pk": 4, "model": "serializers.article", "fields": {"headline": "Nobody remembers the early years", "pub_date": "0001-02-03 04:05:06", "categories": [], "author": 2}}]
 
286
 
 
287
>>> obj = list(serializers.deserialize("json", serialized))[0]
 
288
>>> print obj.object.pub_date
 
289
0001-02-03 04:05:06
279
290
 
280
291
"""}
281
292
 
310
321
>>> obs = list(serializers.deserialize("yaml", serialized))
311
322
>>> for i in obs:
312
323
...     print i
313
 
<DeserializedObject: Just kidding; I love TV poker>
314
 
<DeserializedObject: Time to reform copyright>
 
324
<DeserializedObject: serializers.Article(pk=1)>
 
325
<DeserializedObject: serializers.Article(pk=2)>
315
326
 
316
327
# Custom field with non trivial to string convertion value with YAML serializer
317
328
 
324
335
>>> serialized = serializers.serialize("yaml", Player.objects.all())
325
336
>>> obj = list(serializers.deserialize("yaml", serialized))[0]
326
337
>>> print obj
327
 
<DeserializedObject: Soslan Djanaev (1) playing for Spartak Moskva>
 
338
<DeserializedObject: serializers.Player(pk=1)>
328
339
 
329
340
 
330
341
"""