models.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. # coding: utf-8
  2. from django.db import models
  3. from django.utils.encoding import python_2_unicode_compatible
  4. @python_2_unicode_compatible
  5. class Author(models.Model):
  6. name = models.CharField(max_length=100)
  7. age = models.IntegerField()
  8. friends = models.ManyToManyField('self', blank=True)
  9. def __str__(self):
  10. return self.name
  11. @python_2_unicode_compatible
  12. class Publisher(models.Model):
  13. name = models.CharField(max_length=255)
  14. num_awards = models.IntegerField()
  15. def __str__(self):
  16. return self.name
  17. @python_2_unicode_compatible
  18. class Book(models.Model):
  19. isbn = models.CharField(max_length=9)
  20. name = models.CharField(max_length=255)
  21. pages = models.IntegerField()
  22. rating = models.FloatField()
  23. price = models.DecimalField(decimal_places=2, max_digits=6)
  24. authors = models.ManyToManyField(Author)
  25. contact = models.ForeignKey(Author, related_name='book_contact_set')
  26. publisher = models.ForeignKey(Publisher)
  27. pubdate = models.DateField()
  28. def __str__(self):
  29. return self.name
  30. @python_2_unicode_compatible
  31. class Store(models.Model):
  32. name = models.CharField(max_length=255)
  33. books = models.ManyToManyField(Book)
  34. original_opening = models.DateTimeField()
  35. friday_night_closing = models.TimeField()
  36. def __str__(self):
  37. return self.name
  38. @python_2_unicode_compatible
  39. class DepartmentStore(Store):
  40. chain = models.CharField(max_length=255)
  41. def __str__(self):
  42. return '%s - %s ' % (self.chain, self.name)
  43. @python_2_unicode_compatible
  44. class Employee(models.Model):
  45. # The order of these fields matter, do not change. Certain backends
  46. # rely on field ordering to perform database conversions, and this
  47. # model helps to test that.
  48. first_name = models.CharField(max_length=20)
  49. manager = models.BooleanField(default=False)
  50. last_name = models.CharField(max_length=20)
  51. store = models.ForeignKey(Store)
  52. age = models.IntegerField()
  53. salary = models.DecimalField(max_digits=8, decimal_places=2)
  54. def __str__(self):
  55. return '%s %s' % (self.first_name, self.last_name)
  56. @python_2_unicode_compatible
  57. class Company(models.Model):
  58. name = models.CharField(max_length=200)
  59. motto = models.CharField(max_length=200, null=True, blank=True)
  60. ticker_name = models.CharField(max_length=10, null=True, blank=True)
  61. description = models.CharField(max_length=200, null=True, blank=True)
  62. def __str__(self):
  63. return ('Company(name=%s, motto=%s, ticker_name=%s, description=%s)'
  64. % (self.name, self.motto, self.ticker_name, self.description)
  65. )