models.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import copy
  2. import datetime
  3. from django.contrib.auth.models import User
  4. from django.db import models
  5. class RevisionableModel(models.Model):
  6. base = models.ForeignKey("self", models.SET_NULL, null=True)
  7. title = models.CharField(blank=True, max_length=255)
  8. when = models.DateTimeField(default=datetime.datetime.now)
  9. def save(self, *args, force_insert=False, force_update=False, **kwargs):
  10. super().save(
  11. *args, force_insert=force_insert, force_update=force_update, **kwargs
  12. )
  13. if not self.base:
  14. self.base = self
  15. super().save(*args, **kwargs)
  16. def new_revision(self):
  17. new_revision = copy.copy(self)
  18. new_revision.pk = None
  19. return new_revision
  20. class Order(models.Model):
  21. created_by = models.ForeignKey(User, models.CASCADE)
  22. text = models.TextField()
  23. class TestObject(models.Model):
  24. first = models.CharField(max_length=20)
  25. second = models.CharField(max_length=20)
  26. third = models.CharField(max_length=20)
  27. def __str__(self):
  28. return "TestObject: %s,%s,%s" % (self.first, self.second, self.third)