natural.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. """Models for test_natural.py"""
  2. from django.db import models
  3. class NaturalKeyAnchorManager(models.Manager):
  4. def get_by_natural_key(self, data):
  5. return self.get(data=data)
  6. class NaturalKeyAnchor(models.Model):
  7. objects = NaturalKeyAnchorManager()
  8. data = models.CharField(max_length=100, unique=True)
  9. title = models.CharField(max_length=100, null=True)
  10. def natural_key(self):
  11. return (self.data,)
  12. class FKDataNaturalKey(models.Model):
  13. data = models.ForeignKey(NaturalKeyAnchor, models.SET_NULL, null=True)
  14. class NaturalKeyThing(models.Model):
  15. key = models.CharField(max_length=100)
  16. other_thing = models.ForeignKey('NaturalKeyThing', on_delete=models.CASCADE, null=True)
  17. other_things = models.ManyToManyField('NaturalKeyThing', related_name='thing_m2m_set')
  18. class Manager(models.Manager):
  19. def get_by_natural_key(self, key):
  20. return self.get(key=key)
  21. objects = Manager()
  22. def natural_key(self):
  23. return (self.key,)
  24. def __str__(self):
  25. return self.key