1. from django.contrib import admin
    
  2. from django.db import models
    
  3. from django.utils.translation import gettext_lazy as _
    
  4. 
    
  5. 
    
  6. class Site(models.Model):
    
  7.     domain = models.CharField(max_length=100)
    
  8. 
    
  9.     def __str__(self):
    
  10.         return self.domain
    
  11. 
    
  12. 
    
  13. class Article(models.Model):
    
  14.     """
    
  15.     A simple Article model for testing
    
  16.     """
    
  17. 
    
  18.     site = models.ForeignKey(Site, models.CASCADE, related_name="admin_articles")
    
  19.     title = models.CharField(max_length=100)
    
  20.     hist = models.CharField(
    
  21.         max_length=100,
    
  22.         verbose_name=_("History"),
    
  23.         help_text=_("History help text"),
    
  24.     )
    
  25.     created = models.DateTimeField(null=True)
    
  26. 
    
  27.     def __str__(self):
    
  28.         return self.title
    
  29. 
    
  30.     def test_from_model(self):
    
  31.         return "nothing"
    
  32. 
    
  33.     @admin.display(description="not What you Expect")
    
  34.     def test_from_model_with_override(self):
    
  35.         return "nothing"
    
  36. 
    
  37. 
    
  38. class ArticleProxy(Article):
    
  39.     class Meta:
    
  40.         proxy = True
    
  41. 
    
  42. 
    
  43. class Count(models.Model):
    
  44.     num = models.PositiveSmallIntegerField()
    
  45.     parent = models.ForeignKey("self", models.CASCADE, null=True)
    
  46. 
    
  47.     def __str__(self):
    
  48.         return str(self.num)
    
  49. 
    
  50. 
    
  51. class Event(models.Model):
    
  52.     date = models.DateTimeField(auto_now_add=True)
    
  53. 
    
  54. 
    
  55. class Location(models.Model):
    
  56.     event = models.OneToOneField(Event, models.CASCADE, verbose_name="awesome event")
    
  57. 
    
  58. 
    
  59. class Guest(models.Model):
    
  60.     event = models.OneToOneField(Event, models.CASCADE)
    
  61.     name = models.CharField(max_length=255)
    
  62. 
    
  63.     class Meta:
    
  64.         verbose_name = "awesome guest"
    
  65. 
    
  66. 
    
  67. class EventGuide(models.Model):
    
  68.     event = models.ForeignKey(Event, models.DO_NOTHING)
    
  69. 
    
  70. 
    
  71. class Vehicle(models.Model):
    
  72.     pass
    
  73. 
    
  74. 
    
  75. class VehicleMixin(Vehicle):
    
  76.     vehicle = models.OneToOneField(
    
  77.         Vehicle,
    
  78.         models.CASCADE,
    
  79.         parent_link=True,
    
  80.         related_name="vehicle_%(app_label)s_%(class)s",
    
  81.     )
    
  82. 
    
  83.     class Meta:
    
  84.         abstract = True
    
  85. 
    
  86. 
    
  87. class Car(VehicleMixin):
    
  88.     pass