PageRenderTime 18ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/modeltests/serializers/models.py

https://code.google.com/p/mango-py/
Python | 118 lines | 113 code | 0 blank | 5 comment | 0 complexity | 5eee04e15ec196696c1d6c9f1288a805 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. # -*- coding: utf-8 -*-
  2. """
  3. 42. Serialization
  4. ``django.core.serializers`` provides interfaces to converting Django
  5. ``QuerySet`` objects to and from "flat" data (i.e. strings).
  6. """
  7. from decimal import Decimal
  8. from django.db import models
  9. class Category(models.Model):
  10. name = models.CharField(max_length=20)
  11. class Meta:
  12. ordering = ('name',)
  13. def __unicode__(self):
  14. return self.name
  15. class Author(models.Model):
  16. name = models.CharField(max_length=20)
  17. class Meta:
  18. ordering = ('name',)
  19. def __unicode__(self):
  20. return self.name
  21. class Article(models.Model):
  22. author = models.ForeignKey(Author)
  23. headline = models.CharField(max_length=50)
  24. pub_date = models.DateTimeField()
  25. categories = models.ManyToManyField(Category)
  26. class Meta:
  27. ordering = ('pub_date',)
  28. def __unicode__(self):
  29. return self.headline
  30. class AuthorProfile(models.Model):
  31. author = models.OneToOneField(Author, primary_key=True)
  32. date_of_birth = models.DateField()
  33. def __unicode__(self):
  34. return u"Profile of %s" % self.author
  35. class Actor(models.Model):
  36. name = models.CharField(max_length=20, primary_key=True)
  37. class Meta:
  38. ordering = ('name',)
  39. def __unicode__(self):
  40. return self.name
  41. class Movie(models.Model):
  42. actor = models.ForeignKey(Actor)
  43. title = models.CharField(max_length=50)
  44. price = models.DecimalField(max_digits=6, decimal_places=2, default=Decimal('0.00'))
  45. class Meta:
  46. ordering = ('title',)
  47. def __unicode__(self):
  48. return self.title
  49. class Score(models.Model):
  50. score = models.FloatField()
  51. class Team(object):
  52. def __init__(self, title):
  53. self.title = title
  54. def __unicode__(self):
  55. raise NotImplementedError("Not so simple")
  56. def __str__(self):
  57. raise NotImplementedError("Not so simple")
  58. def to_string(self):
  59. return "%s" % self.title
  60. class TeamField(models.CharField):
  61. __metaclass__ = models.SubfieldBase
  62. def __init__(self):
  63. super(TeamField, self).__init__(max_length=100)
  64. def get_db_prep_save(self, value, connection):
  65. return unicode(value.title)
  66. def to_python(self, value):
  67. if isinstance(value, Team):
  68. return value
  69. return Team(value)
  70. def value_to_string(self, obj):
  71. return self._get_val_from_obj(obj).to_string()
  72. class Player(models.Model):
  73. name = models.CharField(max_length=50)
  74. rank = models.IntegerField()
  75. team = TeamField()
  76. def __unicode__(self):
  77. return u'%s (%d) playing for %s' % (self.name, self.rank, self.team.to_string())