models.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from django.db import models
  2. class Person(models.Model):
  3. first_name = models.CharField(max_length=100, unique=True)
  4. last_name = models.CharField(max_length=100)
  5. birthday = models.DateField()
  6. defaults = models.TextField()
  7. create_defaults = models.TextField()
  8. class DefaultPerson(models.Model):
  9. first_name = models.CharField(max_length=100, default="Anonymous")
  10. class ManualPrimaryKeyTest(models.Model):
  11. id = models.IntegerField(primary_key=True)
  12. data = models.CharField(max_length=100)
  13. class Profile(models.Model):
  14. person = models.ForeignKey(Person, models.CASCADE, primary_key=True)
  15. class Tag(models.Model):
  16. text = models.CharField(max_length=255, unique=True)
  17. class Thing(models.Model):
  18. name = models.CharField(max_length=255)
  19. tags = models.ManyToManyField(Tag)
  20. @property
  21. def capitalized_name_property(self):
  22. return self.name
  23. @capitalized_name_property.setter
  24. def capitalized_name_property(self, val):
  25. self.name = val.capitalize()
  26. @property
  27. def name_in_all_caps(self):
  28. return self.name.upper()
  29. class Publisher(models.Model):
  30. name = models.CharField(max_length=100)
  31. class Author(models.Model):
  32. name = models.CharField(max_length=100)
  33. class Journalist(Author):
  34. specialty = models.CharField(max_length=100)
  35. class Book(models.Model):
  36. name = models.CharField(max_length=100)
  37. authors = models.ManyToManyField(Author, related_name="books")
  38. publisher = models.ForeignKey(
  39. Publisher,
  40. models.CASCADE,
  41. related_name="books",
  42. db_column="publisher_id_column",
  43. )
  44. updated = models.DateTimeField(auto_now=True)