models.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from django.contrib.auth.models import User
  2. from django.contrib.contenttypes.fields import (
  3. GenericForeignKey, GenericRelation,
  4. )
  5. from django.contrib.contenttypes.models import ContentType
  6. from django.db import models
  7. class Book(models.Model):
  8. title = models.CharField(max_length=50)
  9. year = models.PositiveIntegerField(null=True, blank=True)
  10. author = models.ForeignKey(
  11. User,
  12. models.SET_NULL,
  13. verbose_name="Verbose Author",
  14. related_name='books_authored',
  15. blank=True, null=True,
  16. )
  17. contributors = models.ManyToManyField(
  18. User,
  19. verbose_name="Verbose Contributors",
  20. related_name='books_contributed',
  21. blank=True,
  22. )
  23. employee = models.ForeignKey(
  24. 'Employee',
  25. models.SET_NULL,
  26. verbose_name='Employee',
  27. blank=True, null=True,
  28. )
  29. is_best_seller = models.BooleanField(default=0, null=True)
  30. is_best_seller2 = models.NullBooleanField(default=0)
  31. date_registered = models.DateField(null=True)
  32. # This field name is intentionally 2 characters long (#16080).
  33. no = models.IntegerField(verbose_name='number', blank=True, null=True)
  34. def __str__(self):
  35. return self.title
  36. class Department(models.Model):
  37. code = models.CharField(max_length=4, unique=True)
  38. description = models.CharField(max_length=50, blank=True, null=True)
  39. def __str__(self):
  40. return self.description
  41. class Employee(models.Model):
  42. department = models.ForeignKey(Department, models.CASCADE, to_field="code")
  43. name = models.CharField(max_length=100)
  44. def __str__(self):
  45. return self.name
  46. class TaggedItem(models.Model):
  47. tag = models.SlugField()
  48. content_type = models.ForeignKey(ContentType, models.CASCADE, related_name='tagged_items')
  49. object_id = models.PositiveIntegerField()
  50. content_object = GenericForeignKey('content_type', 'object_id')
  51. def __str__(self):
  52. return self.tag
  53. class Bookmark(models.Model):
  54. url = models.URLField()
  55. tags = GenericRelation(TaggedItem)
  56. CHOICES = [
  57. ('a', 'A'),
  58. (None, 'None'),
  59. ('', '-'),
  60. ]
  61. none_or_null = models.CharField(max_length=20, choices=CHOICES, blank=True, null=True)
  62. def __str__(self):
  63. return self.url