django-eav2/test_project/models.py

70 lines
1.5 KiB
Python
Raw Normal View History

2021-07-04 15:58:33 +00:00
from django.db import models
from eav.decorators import register_eav
from eav.models import EAVModelMeta
class TestBase(models.Model):
"""Base class for test models."""
class Meta(object):
"""Define common options."""
app_label = 'test_project'
abstract = True
class Patient(TestBase):
name = models.CharField(max_length=12)
example = models.ForeignKey(
'ExampleModel', null=True, blank=True, on_delete=models.PROTECT
)
def __str__(self):
return self.name
def __repr__(self):
return self.name
class Encounter(TestBase):
num = models.PositiveSmallIntegerField()
patient = models.ForeignKey(Patient, on_delete=models.PROTECT)
def __str__(self):
return '%s: encounter num %d' % (self.patient, self.num)
def __repr__(self):
return self.name
@register_eav()
class ExampleModel(TestBase):
name = models.CharField(max_length=12)
def __unicode__(self):
return self.name
@register_eav()
class M2MModel(TestBase):
name = models.CharField(max_length=12)
models = models.ManyToManyField(ExampleModel)
def __unicode__(self):
return self.name
class ExampleMetaclassModel(TestBase, metaclass=EAVModelMeta):
name = models.CharField(max_length=12)
def __str__(self):
return self.name
class RegisterTestModel(TestBase, metaclass=EAVModelMeta):
name = models.CharField(max_length=12)
def __str__(self):
return self.name